2014년 4월 29일 화요일

architecture - GoF Design Pattern

GoF Design Pattern (Gang of Four : Erich Gamma, Richard Helm, Ralph Johnson, Jone Vlissides)


디자인 패턴 관계도


(출처 : http://nasir.files.wordpress.com/2009/11/design_patterns1.jpg)


객체생성에 관한 패턴

1. Factory Method : 팩토리 메소드 패턴
 - 객체를 생성하는 작업을 대신해주는 패턴
 - 객체 생성이 복잡할때 유용

2. Singleton : 싱글톤 패턴
 - 클래스의 인스턴스가 오로지 하나만 존재해야 하는 경우 사용
 - 무분별한 객체 생성을 방지

3. Prototype : 프로토타입 패턴
 - 동일한 객체를 여러번 생성해야 하는 비용을 줄이기 위한 패턴으로 한번 로딩된 객체를 복제하여 사용

4. Builder : 빌더 패턴
 - 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴
 - 객체를 이루는 구성요소를 분리하여 객체의 세부 구성요소 클래스를 별도로 만들고 그 구성요소 클래스를 조합하여 하나의 객체를 만드는 것

5. Abstract Factory : 추상 팩토리 패턴
 - 인터페이스를 통해 생성하려는 객체의 실제 타입을 은닉


행동에 관한 패턴

1. Iterator : 반복자 패턴
 - 내부 구현에 대한 이해 없이 자료의 집합체를 탐색할 수 있게 해줌

2. Template Method : 탬플릿 메소드 패턴
 - 메소드 실행 순서를 추상 클래스에서 정의하며 실제 동작하는 알고리즘은 구현 클래스에서 정의하도록 함

3. Strategy : 전략 패턴
 - 알고리즘 인터페이스를 정의하고 각각의 알고리즘을 클래스별로 캡슐화 하여 각각의 알고리즘을 교체가 가능하게 함
 - 유지보수의 효율성을 높이기 위해 동적으로 알고리즘을 변경할 수 있는 패턴

4. Visitor : 방문자 패턴
 - 객체의 구조와 기능을 분리시키는 패턴
 - 구조는 변하지 않으며 기능만 따로 추가되거나 확장되는 경우 사용
 - Composite Pattern과 함께 사용되는 경우가 많음

5. Chain of Responsibility : 책임 연쇄 패턴
 - 요청을 처리할 수 있는 기회를 하나 이상의 객체에게 부여함으로써 요청하느 객체와 처리하는 객체 사이의 결합도를 없애는 패턴
 - 요청을 해결할 객체를 만날 때까지 객체 고리를 따라서 요청

6. Mediator : 중재자 패턴
 - 모든 클래스간 복잡한 로직을 캡슐화하여 하나의 클래스에 위함하여 처리하는 패턴

7. Observer : 옵저버 패턴
 - 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 통지하여 자동으로 갱신처리 되는 패턴
 - 일방적 통지 방식의 패턴

8. Memento : 메멘토 패턴
 - 객체의 상태 정보를 저장 및 복원하는 패턴
 - 객체의 내부 상태정보만 가지는 클래스를 따로 생성하여 관리하는 구조

9. Command : 커맨드 패턴
 - 메소드(작업요청)을 객체의 형태로 캡슐화하는 것
 - 특정한 일을 하는 기능을 따로따로 객체화하여 요청의 종류와는 무관하게 프로그램 작성이 가능하게 함

10. Interpreter : 해석자 패턴
 - 문법 규칙을 클래스화 한 구조로 일련의 규칙으로 정의된 언어를 해석하는 패턴
 - 스크립트나 컴파일러 등 언어분석기
 - 통신 프로토콜, SQL 구문 분석기 등

11. State : 상태 패턴
 - 객체의 상태에 따라 각각의 행위를 변경할 수 있게 캡슐화


구조에 관한 패턴

1. Adapter
 - 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 적용시킴
 - Wrapper 와 유사

2. Bridge : 브리지 패턴
 - 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴
 - 상속을 이용한 패턴으로 확장 설계에 용이

3. Composite : 컴포지트 패턴
 - 객체와 객체 그룹을  구분없이 하나의 인터페이스로 다룰 수 있게함

4. Decorator : 데코레이터 패턴
 - 객체에 기능을 덧 붙이는 패턴
 - 기능 확장시 서브클래스의 대안

5. Facade : 파사드 패턴
 - 통일된 인터페이스를 통해 복잡한 서브시스템들을 간단히 사용하도록 만든 패턴

6. Flyweight : 플라이웨이트 패턴
 - 데이터를 공유 사용하여 메모리를 절약하는 패턴
 - 객체는 풀로 관리

7. Proxy : 프락시 패턴
 - 실제 사용하려는 객체를 대신해서 역할을 해주는 패턴으로 원래 객체의 접근제어를 목적으로 사용됨


참고)

GoF Design Pattern Reference Card

http://www.mcdonaldland.info/files/designpatterns/designpatternscard.pdf








댓글 없음:

댓글 쓰기