1. GoF(Gang of Four) 란?
<디자인 패턴> 은 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안한 책이다.
이 분야의 사인방(Gang of Four)으로 불리는
에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Jonhson), 존 블리시데스(John Vlissides)가 같이 썼고,
한국어 판은 김정아의 번역으로 피어슨 에듀케이션 코리아를 통해 출판되었다.
책의 첫 번째 반절은 다양한 디자인 패턴의 정의에 할애하고 있고, 나머지 반절은 실제적으로 유용한 디자인 패턴들을 나열하고 있다.
책의 예제들은 객체지향적인 언어인 C++과 스몰토크로 제시되고 있다.
다음은 책에서 언급되고 있는 패턴 리스트이다.
2. 생성패턴(Creational Patterns) 5 : 객체 생성에 대한 패턴 / 캡슐화 + 유연성 목표
추상 팩토리
(Abstract Factory)
|
상위 클래스의 객체 생성코드를 하위클래스가 상속받는다.
( 상위변경 = 하위 자동 변경 )
|
빌더
(Builder)
|
분리된 인스턴스를 조합하여 객체 생성.
같은 객체를 생성해도 다른 결과를 도출할 수 있음.
|
팩토리 메소드
(Factory Method)
|
객체 생성 코드를 하위 클래스에서 구체화, 상위 클래스는 인터페이스만 제공
(각각 다른 작업 수행)
|
프로토타입
(Prototype)
|
원본을 복제하는 형태로 객체 생성, 비용 저렴
|
싱글턴
(Singleton)
|
클래스 내 생성되는 인스턴스가 하나만 필요할 때 사용
(동시참조X)
|
3. 구조패턴(Structural Patterns) 7 : 구조가 복잡한 시스템 개발에 도움을 줄 수 있음
어댑터
(Adapter)
|
일치하지 않는 인터페이스 변환
(전류 어댑터와 같은 역할)
|
브릿지
(Bridge)
|
추상층(기능)과 구현층(구체화)을 분리하여 서로 독립적 확장 가능
|
합성
(Composite)
|
트리구조로 구성
|
데토레이터
(Decorator)
|
클래스에 기능을 추가하기 위해 다른 객체를 덧붙이는 형태
|
파사드
(Facade)
|
다수의 서브클래스들의 통합 인터페이스를 제공할 수 있는 Wrapper 객체 구성
|
플라이웨이트
(Flyweight)
|
다수의 유사 객체 생성이 필요할 때 메모리 절약을 위해 최대한 공유해서 사용하는 형태
|
프록시
(Proxy)
|
접근이 어려운 객체에 접근할 수 있도록 인터페이스 역할 수행
|
4. 행동패턴(Behavioral Patterns) 11 : 상호작용이나 책임 분배에 대한 부분을 정의하고 결합도는 최소화 하는 것이 목표
책임연쇄
(Chain of Responsibility)
|
요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴.
각 객체들이 고리(Chain)으로 묶여있어 요청이 해결될 때까지 고리를 따라 책임이 넘어간다.
|
커맨드
(Command)
|
명령어를 캡슐화하여 재사용하거나 취소할 수 있도록 필요한 정보를 로그에 남기는 형태
|
인터프리터
(Inerpreter)
|
언어에 문법 표현을 정의하는 패턴
|
반복자
(Iterator)
|
접근이 잦은 객체는 동일한 인터페이스를 사용하도록 하는 패턴
|
중재자
(Mediator)
|
상호작용을 캡슐화하여 결합도를 낮추기위해 사용
|
메멘토
(Memento)
|
특정 시점에서의 객체 내부 상태를 객관화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 들릴 수 있는 기능을 제공하는 패턴이다. Ctrl + Z 기능이 이 패턴의 대표적 기능
|
옵저버
(Observer)
|
이벤트 발행과 구독, 상태 변화 전달. 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달하는 패턴.
카톡의 읽음표시 같은 느낌
|
상태
(State)
|
이벤트를 객체 상태에 따라 다르게 처리해야 할 때 사용.
카톡 알림설정 같은 느씸
|
전략
(Strategy)
|
동일 계열 알고리즘 상호 교환, 독립적 사용
|
템플릿 메소드
(Template Method)
|
상위에서 인터페이스를 정의하고 하위에서 구체화 시킴
(유지보수 쉬워짐)
|
방문자
(Visitor)
|
처리 기능을 별도의 클래스로 구성.
분리된 처리 기능은 각 클래스를 방문(Visit)하여 수행한다.
|
'정보처리기사 [필기] > 1과목 소프트웨어 설계' 카테고리의 다른 글
[정보처리기사 - 필기] 시스템 정의 및 구성요소 (0) | 2022.07.26 |
---|---|
[정보처리기사 - 필기] 요구사항 개발 프로세스 (0) | 2022.07.26 |
[정보처리기사 - 필기] 객체지향 (0) | 2022.07.26 |
[정보처리기사 - 필기] SW아키텍처 설계 : 시스템 품질속성 (0) | 2022.07.26 |
[정보처리기사 - 필기] CASE (Computer - Aided Software Engineering) (0) | 2022.07.26 |
댓글