본문 바로가기
Object-Oriented Programming/Design Pattern

GoF Design Patterns

by yongmin.Lee 2022. 3. 14.

GoF 디자인 패턴

  • 디자인 패턴 : 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션
  • GoF의 디자인패턴에서는 객체지향적 디자인 패턴의 카테고리를 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)" 3가지로 구분

GoF 디자인 패턴

 

Creational Patterns, 생성패턴

  • 생성 패턴은 "인스턴스를 만드는 절차를 추상화"하는 패턴입니다.
  • 생성 패턴에 속하는 패턴들은 객체를 생성하는 방법을 시스템과 분리해줍니다.
  • 생성 패턴에서는 중요한 이슈가 두 가지
    • 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화합니다.
    • 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려줍니다.
  • 생성패턴 종류

 

Structural Patterns, 구조패턴

  • 구조 패턴이란 작은 클래스들을 상속과 합성을 이용하여 더 큰 클래스를 생성하는지 "결합방법"을 제공하는 패턴
  • 객체를 합성하는 방법을 제공함으로써 런타임시 복합 방법이나 대상을 변경할 수 있다는 점에서 유연성을 갖는다.
  • 구조패턴 종류
    • 파사드 패턴
    • 프록시 패턴
      • 어떤 다른 객체로 접근하는 것을 통제하기 위해서 그 객체의 대리자의 역할을 하는 객체를 제공하는 패턴 
      • https://yongminlee26.tistory.com/349
    • 데코레이터 패턴
      • 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우, 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 하는 패턴
      • https://yongminlee26.tistory.com/350
    • 컴포지트 패턴
    • 어댑터 패턴

 

Behavioral Patterns ,행위패턴

  • 클래스 또는 객체들간의 상호작용을 다루는 패턴입니다. 객체간의 "커뮤니케이션 "
  • 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점
  • 행위패턴 종류
    • template method pattern
      •  슈퍼클래스에서 알고리즘의 골격을 정의하고 알고리즘의 일부 단계를 서브클래스에서 구현함으로써, 알고리즘의 구조는 그대로 유지하면서 여러곳에서 다른형태로 사용할 수 있게해주는 패턴
      • https://yongminlee26.tistory.com/341
    • state pattern
    • Strategy Pattern
    • observer pattern
      • 객체의 상태 변화를 관찰하는 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 패턴 
      • https://yongminlee26.tistory.com/355

 

 

 

 

 

 

참고자료

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= 

'Object-Oriented Programming > Design Pattern' 카테고리의 다른 글

Factory Method Pattern, 팩토리 메소드 패턴  (0) 2022.05.09
Facade Pattern  (0) 2022.05.04
Strategy Pattern  (0) 2022.04.15
Repository 패턴  (0) 2021.12.08
Singleton Pattern  (0) 2021.02.17