_Rey
프로그래뭄
_Rey
전체 방문자
오늘
어제
  • 분류 전체보기 (118)
    • Life (2)
    • iOS (49)
      • iOS (13)
      • Swift (19)
      • UIKit (0)
      • RxSwift (6)
      • SwiftUI (11)
    • Design Pattern (14)
      • GoF - Creational Patterns (6)
      • GoF - Structural Patterns (7)
    • Data Structure & Algorithm (48)
      • Data Structure (3)
      • Algorithm (8)
      • Advent of Code 2024 (1)
      • 코테 스터디 TIL (36)
    • English (2)
    • Book (2)
      • Clean Architecture (2)

블로그 메뉴

  • Instagram
  • Github
  • Naver Blog

공지사항

  • Hello, Programoom

인기 글

hELLO · Designed By 정상우.
_Rey

프로그래뭄

Design Pattern

[Design Pattern] Intro

2022. 9. 18. 11:12

디자인 패턴이란?

디자인 패턴은 소프트웨어 디자인(설계)에서 일반적으로 발생하는 문제에 대한 일반적인 솔루션이다.

이는 코드에서 반복되는 디자인 문제를 해결하기 위해 사용자 지정할 수 있는 미리 만들어진 청사진과 같다.

 

라이브러리를 사용하는 것처럼 패턴을 프로그램에 복사할 수는 없다.

패턴은 특정 코드 조각이 아니라 특정 문제를 해결하기 위한 일반적인 개념이기 때문이다.

패턴 세부 사항을 따르고 자신의 프로그램에 맞는 솔루션을 구현해야한다.

 

패턴은 알고리즘과 혼동되는 경우가 많은데, 두 개념 모두 알려진 문제에 대한 일반적인 솔루션을 설명하는 개념이기 때문이다.

알고리즘은 항상 어떤 목표를 달성할 수 있는 명확한 일련의 작업을 정의하지만, 패턴은 솔루션보다 높은 수준의 개념이다.

두 개의 다른 프로그램에 적용된 동일한 패턴의 코드는 다를 수 있다.

 

알고리즘에 대한 비유는 요리법이다.

둘 다 목표를 달성하기 위한 명확한 단계가 있지만, 패턴은 청사진에 가깝습니다.

결과와 그 기능이 무엇인지는 볼 수 있지만 정확한 구현 순서는 개발자에게 달려 있다.

 

디자인이 패턴이 중요한 이유!

- 디자인 패턴은 소프트웨어 설계의 일반적인 문제에 대한 이미 시도되었고 테스트된 솔루션의 Tool Kit이다.

문제가 발생하지 않더라도 패턴을 아는 것은 객체 지향 설계 원칙을 사용하여 거의 모든 종류의 문제를 해결하는 방법을 가르쳐주기 때문에 여전히 유용하다.

 

- 디자인 패턴은 팀원들이 보다 효율적으로 의사소통하는데 사용할 수 있는 공통 언어를 정의한다.

"그냥 Singleton을 사용하세요"라고 말하면 모두가 문구 뒤에 숨겨진 아이디어를 이해할 것이다.

패턴과 이름을 안다면 Singleton이 무엇인지 설명할 필요가 없다.

 

디자인 패턴의 단점?

- 디자인 패턴은 이미 널리 사용되는 접근 방식을 체계화하려고 한다.

이렇게 체계화된 통일은 많은 사람들에 의해 독단적인 신념으로 여겨지며, 그들은 프로젝트의 맥락에 맞추지 않고 "문자 그대로" 패턴을 구현한다.

 

- 부당한 사용

"망치만 있으면 모든 것이 못으로 보인다" 라는 말이 있다.

패턴에 익숙해진 많은 주니어를 괴롭히는 문제다.

패턴에 대해 배운 후 대부분의 주니어 개발자들은 더 간단한 코드가 잘 작동하는 상황에서도 모든 곳에서 패턴을 적용하려고 합니다.

 

패턴의 종류

모든 패턴은 그 의도 또는 목적에 따라 분류할 수 있다.

대표적으로는 생성(Creational) 패턴, 구조적(Structural) 패턴, 행동(Behavioral) 패턴이 있다.

 

- Creational Patterns : 코드의 유연성(Flexibility)과 재사용(Reuse)을 증가시킨다.

Factory Method, Abstract Factory, Builder, Prototype, Singleton

 

- Structural Patterns : 패턴의 구조를 효율적으로 유지하면서 객체(Object)와 클래스(Class)를 더 큰 구조로 결합(Assemble)한다.

Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy

 

- Behavioral Patterns : 알고리즘 및 객체 간의 책임 할당(Assignment of responsibilities)과 관련이 있는 패턴이다.

Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor

 

 

Design Patterns

Design Patterns Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code. Catalog of patterns List of 22 classic design patterns,

refactoring.guru

 

저작자표시 비영리 변경금지 (새창열림)
    _Rey
    _Rey
    잘 배워서 다 남주자

    티스토리툴바