본문 바로가기

2021 정보처리기사/참고자료: 정보처리기사

GoF(Gang of Four)란? 디자인패턴

728x90
반응형

 

GoF(Gang of Four) 란?

《디자인 패턴》(Design Patterns, ISBN 0-201-63361-2)은 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안한 책이다. 이 분야의 사인방(Gang of Four, 줄여 GoF)으로 불리는 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vlissides)가 같이 썼고, 한국어 판은 김정아의 번역으로 피어슨 에듀케이션 코리아를 통해 출판되었다.


책의 첫 번째 반절은 다양한 디자인 패턴의 정의에 할애하고 있고, 나머지 반절은 실제적으로 유용한 디자인 패턴들을 나열하고 있다. 책의 예제들은 객체지향적인 언어인 C++과 스몰토크로 제시되고 있다. 다음은 책에서 언급되고 있는 패턴의 리스트이다.

 

 

 

 

 

 

생성 패턴(Creational Patterns) 5:
객체 생성에 대한 패턴 / 캡슐화+유연성 목표

 추상 팩토리 (Abstract Factory)  상위 클래스의 객체 생성코드를 하위클래스가 상속받는다(상위변경=하위자동변경) 
 빌더 (Builder)  분리된 인스턴스를 조합하여 객체 생성. 같은 객체를 생성해도 다른 결과를도출할 수 있음
 팩토리 메소드 (Factory Method)  객체 생성 코드를 하위클래스에서 구체화. 상위 클래스는 인터페이스만 제공(각각 다른작업수행)
 프로토타입(Prototype)  원본을 복제하는 형태로 객체 생성, 비용 저렴
 싱글턴(Singleton) 클래스 내 생성되는 인스턴스가 하나만 필요할 때 사용(동시참조X)

 

 

 

 

 

 

 

 

구조 패턴(Structural Patterns) 7:
구조가 복잡한 시스템 개발에 도움을 줄 수 있음

 어댑터(Adapter)  일치하지 않는 인터페이스 변환 (전류 어댑터와 같은 역할)
 브릿지(Bridge)  추상층(기능)과 구현층(구체화)을 분리하여 서로 독립적 확장 가능
 합성(Composite)  트리구조로 구성
 데코레이터(Decorator)  클래스에 기능을 추가하기 위해 다른 객체를 덧붙이는 형태
 파사드(Facade)  다수의 서브클래스들의 통합 인터페이스를 제공할 수 있는 Wrapper 객체 구성
 플라이웨이트(Flyweight)  다수의 유사 객체 생성이 필요할 때 메모리 절약을 위해 최대한 공유해서 사용하는 형태
 프록시(Proxy)  접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행

 

 

 

 

 

 

 

행동 패턴(Behavioral Patterns) 11:
상호작용이나 책임 분배에 대한 부분을 정의하고 결합도는 최소화 하는 것이 목표

 책임 연쇄(Chain of Responsibility) 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴. 각 객체들이 고리(Chain)으로 묶여있어 요청이 해결될 때까지 고리를 따라 책임이 넘어간다.
 커맨드(Command) 명령어를 캡슐화하여 재사용하거나 취소할 수 있도록 필요한 정보를 로그에 남기는 형태
 인터프리터(Interpreter) 언어에 문법 표현을 정의하는 패턴
 반복자(Iterator) 접근이 잦은 객체는 동일한 인터페이스를 사용하도록 하는 패턴
 중재자(Mediator) 상호작용을 캡슐화하여 결합도를 낮추기위해 사용
 메멘토(Memento) 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴이다. Ctrl+Z 기능이 이 패턴의 대표적 기능
 옵저버(Observer) 이벤트 발행과 구독, 상태 변화 전달. 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달하는 패턴. 카톡의 읽음표시 같은 느낌
 상태(State) 이벤트를 객체 상태에 따라 다르게 처리해야할 때 사용. 카톡 알림설정 같은 느낌
 전략(Strategy) 동일 계열 알고리즘 상호 교환, 독립적 사용
 템플릿 메소드(Template Method) 상위에서 인터페이스를 정의하고 하위에서 구체화시킴 (유지보수 쉬워짐)
 방문자(Visitor) 처리 기능을 별도의 클래스로 구성. 분리된 처리 기능은 각 클래스를 방문(Visit)하여 수행한다.

 

 

 

 

 

 

 

[소프트웨어 설계] Use Case(유스케이스) 란?

Use Case(유스케이스)란? 유스케이스의 예시 유스케이스(use case)는 행위자(actor)가 관심을 가지고 있는 유용한 일을 달성하기 위한 시나리오의 집합을 명시한다 (ex. 음료 자판기의 유스케이스: "

y-oni.tistory.com

 

[소프트웨어 설계] 소프트웨어 아키텍처(Architecture)

[소프트웨어 설계]  소프트웨어 아키텍처(Architecture) 소프트웨어 아키텍처(Architecture) [마틴 파울러] 소프트웨어 아키텍처의 중요성 (한글자막) 소프트웨어 아키텍처의 정의 아키텍처란 소프트웨

y-oni.tistory.com

 

728x90