디자인 패턴: 설계를 올바르고 효과적으로 하기 위해 사용하는 툴.
소프트웨어 개발은 크게
1. 요구사항 분석
2. 설계
3. 구현
4. 테스트
의 주기를 갖는다.
이때 설계 단계에서 사용할 수 있는 도구이며 자주 나타나는 클래스들 간의 관계를 맺는 방법을 설명한다.
올바른 관계를 맺어야 하는 이유
1. 클래스가 최소한의 단위 기능을 갖도록 도와줌 --> 꼭 필요한 것들로만 구성되어 최적화된 소프트웨어 개발 가능
2. 문제 발생 시 최소한의 코드 수정으로 유지보수 용이
3. 기존 기능에 영향을 주지 않고 새로운 기능 추가 용이
GoF 디자인 패턴
4명의 개발자(Gang of Four)가 체계적으로 정리한 설계 방법.
23가지의 많이 사용하며, 유용한 디자인 패턴으로 구성됐다.
| 생성 패턴(5개) | 구조 패턴(7개) | 행위 패턴(11개) |
| Factory Method Abstract Factory Builder Prototype Singleton |
Adapter Bridge Conposite Decorator Facade Flyweight Proxy |
Interpreter Template Method Chain of Responsibility Command Iterator Mediator Memento Observer Strategy Visitor |
Class Diagram: 클래스 간의 관계를 나타낸 다이어그램. UML에서 정의한 다이어그램 중 하나.
다이아 표시 : 소유의 의미 다이아 붙은 쪽이 소유주(뭔가를 담는 그릇?)(검은색 : 생명 주기를 함께함 / 흰색: 생명 주기가 별개임)
별표 표시: 여러개를 가질 수 있다. (그림엔 없음)

*Strategy Pattern: 어떤 하나의 기능을 구성하는 특정 부분을 실행 중에 다른 것으로 효과적으로 바꿈. 필요할 경우 전략을 바꾸는 패턴.
구현 방법:
1. Interface를 통해 구현 필요한 전략을 작성한다.
2. 이를 implements 해 특정 전략을 작성한다.
3. 전략을 사용해 특정 기능을 하는 Class 작성 후 파라미터로 2번 전략을 받아 기능을 수행한다.
이를 Class Diagram으로 그리면 아래와 같습니다

* Iterator Pattern: Aggregator의 구성 데이터를 하나씩 가져와야 할 때 통일된 하나의 방법으로 데이터를 가져오기 위해 사용하는 패턴
Container / Aggregator : 동일한 형태의 데이터 항목을 여러개 가지고 있는 것.
ex) Array, Tree, Linked List 등..
Aggregator의 구성 데이터를 하나씩 가져와야 할 때 Aggregator의 종류에 따라 방법이 다를 수 있음. (내부 자료구조가 다르기 때문)
Iterator, Aggregator 인터페이스 : Aggregator의 구성 테이터를 하나씩 가져올 수 있는 통일된 인터페이스
Array, ArrayIterator 클래스: Iterator pattern을 적용하기 위한 클래스. Aggregator의 종류 중 배열에 특화된 클래스
Item : Aggregator 구성 데이터의 타입

'코딩 > Software Architecture' 카테고리의 다른 글
| [GoF Design Pattern] Prototype (0) | 2022.12.03 |
|---|---|
| [GoF Design Pattern] Proxy (0) | 2022.12.02 |
| [GoF Design Pattern] Factory Method, Observer (0) | 2022.12.01 |
| [GoF Design Pattern] Singleton, Bridge, Template, Adapter (0) | 2022.11.26 |
| [소프트웨어 아키텍처] MVC Pattern & OSI 7 Layer (0) | 2022.11.10 |