CS

디자인 패턴의 종류

창문닦이 2020. 8. 10. 22:51

디자인 패턴
유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해놓은 것이다. 소프트웨어 개발에서 효율성과 재사용성을 높일 수 있다.



GoF 디자인 패턴의 종류
1. 생성(Creational) 패턴 : 객체 생성 관련

  • 추상 팩토리(Abstract Factory) : 제품군별 객체 생성
  • 빌더(Builder) : 부분 생성을 통한 전체 객체 생성
  • 팩토리 메서드(Factory Methods) : 대행 함수를 통한 객체 생성, 인스턴스 생성 결정은 서브클래스
  • 프로토타입(Prototype) : 복제를 통한 객체 생성
  • 싱글톤(Singleton) : 클래스 인스턴스가 하나만 만들어지고 그 인스턴스에 전역접근하여 사용하는 패턴


2. 구조(Structural) 패턴 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴

  • 어댑터(Adapter) : 클라이언트가 기대하는 다른 인터페이스로 전환
  • 브리지(Brdige) : 인터페이스와 구현의 명확한 분리
  • 컴포지트(Composite) : 객체간의 부분, 전체 관계 형성 및 관리, 재귀적 합성 이용
  • 데커레이터(Decorator) : 상속없이 객체의 긴으을 동적으로 추가, 삭제(overloading)
  • 퍼사드(Facade) : 서브시스템에 대한 통합된 인터페이스를 제공
  • 플라이웨이트(Flyweight) : 작은 객체들의 공유
  • 프록시(Proxy) : 대체(대리자) 객체를 통한 작업 수행


3. 행위(Behavioral) 패턴 : 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

  • 인터프리터(Interpreter) : 간단한 문법에 기반한 검증작업 및 작업 처리
  • 옵서버(Observer) : 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴. One source Multiple Use.
  • 스테이트(State) : 객체의 상태에 따라 객체의 행위 내용을 변경해주는 패턴
  • 스트래티지(Strategy) : 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
  • 템플릿 메서드(Template Method) : 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴. 즉, 상위 클래스에서 기본 골격을 결정하고 하위 클래스에서 구체적 내용 정의.
  • 커맨드(Command) : 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
  • 이터레이터(Iterator) : 동일 자료형의 여러 객체 순차 접근
  • 미디에이터(Mediator) : 객체들 간의 상호작용을 객체로 캡슐화. M:N 객체 관계를 M:1로 단순화
  • 메멘토(Memento) : 객체 이전 상태 복원 또는 보관
  • 비지터(Visitor) : 오퍼레이션이 처리할 요소의 클래스를 변경하지 않고도 새로운 오퍼레이션을 정의
  • 책임 연쇄(Chain of Responsibility) : 수행 가능 객체군까지 요청 전파