소프트웨어 디자인패턴(software design pattern)이란?
- 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바뀔 수 있는 완성된 디자인은 아니고 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는 데 쓰이는 서술이나 템플릿이다.
- 개발자가 애플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데 쓰이는 형식화된 가장 좋은 관행이다.
- 디자인 패턴은 설계자들이 올바른 설계를 빨리 만들 수 있도록 도와준다.
- 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션 같은 것이다.
- 「GoF의 디자인패턴」에서는 아래 세 가지로 구분한다.
- 복잡성, 상세도 및 설계 중인 전체 시스템에 대한 적용 범위에 따라 다음과 같이 분류
- 생성 패턴
- 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘을 제공
- ex) Singleton, Prototype, Builder, Factory Method, Abstract Factory
- 구조 패턴
- 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법을 설명한다.
- ex) Adapter, Bridge, Decorator, Proxy, Facade, Flyweight
- 행동 패턴
- 객체 간의 효과적인 의사 소통과 책임 할당을 처리한다.
- ex) Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Templete Method
- 생성, 구조, 행동 패턴이 각각 어떤 문제를 해결하는지 파악한다.
- 패턴 간의 관련성을 파악해야한다.
- 예제 코드를 직접 작성하는 게 좋다.
디자인패턴
- Ex)
- Java의 String의 내부 구현: 플라이웨이트(flyweight)
- foreach문 : 반복자(iterator)
스터디 계획
- https://refactoring.guru/ko/design-patterns/behavioral-patterns
- 생성: 프로토타입 빼고
- 구조: 어댑터, 데코레이터, 프록시 세 개??
- 행동 : 전략, ??
- 코드 직접 구현 또는 찾아 오기
- 다음 주 수 9시: 빌더,싱글톤
참고)
https://readystory.tistory.com/114
https://refactoring.guru/ko/design-patterns/what-is-pattern
https://pocu-ko.teachable.com/courses/851311/l
'디자인 패턴 (Design Pattern)' 카테고리의 다른 글
[구조 패턴] 퍼사드 패턴(Facade pattern) (0) | 2023.03.13 |
---|---|
[구조 패턴] 데코레이터 패턴(Decorator pattern, 장식자) (0) | 2023.03.12 |
[행동 패턴] 커맨드 패턴(Command Pattern, 명령 패턴) (0) | 2023.02.27 |
[행동 패턴] 템플릿 메서드(Template Method) (0) | 2023.02.27 |
[행동 패턴] 전략 패턴(Strategy Pattern) (0) | 2023.02.27 |