Object-Oriented Programming/Design Pattern
GoF Design Patterns
yongmin.Lee
2022. 3. 14. 18:43
GoF 디자인 패턴
- 디자인 패턴 : 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션
- GoF의 디자인패턴에서는 객체지향적 디자인 패턴의 카테고리를 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)" 3가지로 구분
Creational Patterns, 생성패턴
- 생성 패턴은 "인스턴스를 만드는 절차를 추상화"하는 패턴입니다.
- 생성 패턴에 속하는 패턴들은 객체를 생성하는 방법을 시스템과 분리해줍니다.
- 생성 패턴에서는 중요한 이슈가 두 가지
- 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화합니다.
- 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려줍니다.
- 생성패턴 종류
- 팩토리 매서드 패턴
- 객체 생성을 서브클래스로 위임하여 캡슐화함
- https://yongminlee26.tistory.com/337
- 추상 팩토리 패턴
- 구체적인 클래스에 의존하지 않고, 서로 연관되거나 의존적인 객체들의 조합을 생성하는 인터페이스를 제공하는 패턴
- https://yongminlee26.tistory.com/338
- 싱글톤 패턴
- 어떤 클래스의 인스턴스는 하나임을 보장하고 어디서든 참조할 수 있도록 함
- https://yongminlee26.tistory.com/201
- 팩토리 매서드 패턴
Structural Patterns, 구조패턴
- 구조 패턴이란 작은 클래스들을 상속과 합성을 이용하여 더 큰 클래스를 생성하는지 "결합방법"을 제공하는 패턴
- 객체를 합성하는 방법을 제공함으로써 런타임시 복합 방법이나 대상을 변경할 수 있다는 점에서 유연성을 갖는다.
- 구조패턴 종류
- 파사드 패턴
- 서브시스템에 있는 인터페이스 집합에 대해 하나의 통합된 인터페이스(Wrapper) 제공
- https://yongminlee26.tistory.com/339
- 프록시 패턴
- 어떤 다른 객체로 접근하는 것을 통제하기 위해서 그 객체의 대리자의 역할을 하는 객체를 제공하는 패턴
- https://yongminlee26.tistory.com/349
- 데코레이터 패턴
- 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우, 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 하는 패턴
- https://yongminlee26.tistory.com/350
- 컴포지트 패턴
- 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴
- https://yongminlee26.tistory.com/351
- 어댑터 패턴
- 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환 해주는 패턴
- https://yongminlee26.tistory.com/352
- 파사드 패턴
Behavioral Patterns ,행위패턴
- 클래스 또는 객체들간의 상호작용을 다루는 패턴입니다. 객체간의 "커뮤니케이션 "
- 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점
- 행위패턴 종류
- template method pattern
- 슈퍼클래스에서 알고리즘의 골격을 정의하고 알고리즘의 일부 단계를 서브클래스에서 구현함으로써, 알고리즘의 구조는 그대로 유지하면서 여러곳에서 다른형태로 사용할 수 있게해주는 패턴
- https://yongminlee26.tistory.com/341
- state pattern
- 객체 내부의 상태 변화에 따라 객체의 행위를 바뀔수 있게해주는 패턴
- https://yongminlee26.tistory.com/354
- Strategy Pattern
- 교환 가능한 객체들을 정의해두고 Strategy protocol을 이용하여 런타임에 설정하거나 변환하는 패턴
- https://yongminlee26.tistory.com/321
- observer pattern
- 객체의 상태 변화를 관찰하는 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 패턴
- https://yongminlee26.tistory.com/355
- template method pattern
참고자료
https://readystory.tistory.com/121
https://4z7l.github.io/2020/12/25/design_pattern_GoF.html
https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8616098823&cate_cd=