분 류 |
설 명 |
패턴의 종류 |
기본패턴 (Fundamental Design Patterns) |
가장 기본인 동시에 가장 중요한 패턴 |
델리게이션 (Delegation [Grand98]) |
인터페이스 (Interface [Grand98]) | ||
이뮤터블패턴(Immutable [Grand98]) | ||
마커 인터페이스 (Marker Interface [Grand98]) | ||
프록시 (Proxy [Grand98]) | ||
생성패턴 (Creational Patterns) |
객체의 생성방식을 결정하는데 포괄적인 솔루션을 제공하는 패턴으로, 클래스 정의와 객체 생성방식을 구조화, 캡슐화하는 방법을 제시한다. 클래스의 재사용을 위해 상속보다는 컴포지션 기법을 보다 많이 이용한다. 캡슐화와 생성방식의 연동되는 방법을 내부 구조에 숨기기도 하지만, 생성패턴의 적용은 전체적인 시스템 구성의 유동성이 향상되어 객체 생성 방식이 다양한 구조로 진행될 수 있다. ※ 추상화 팩토리 패턴과 프로토타입 패턴의 경우 서로 명확하게 구분 지어 사용하기 힘들다. 하지만 싱글턴 패턴을 적용할 때는 추상화 팩토리 패턴 대신 프로토타입 패턴을 적용하는 것이 보다 효과적이다. 또한 빌더 패턴은 다른 패턴을 자신의 컴포넌트처럼 적용하는데 용이하다. |
팩토리 메쏘드 (Factory Method [GoF95]) |
추상화 팩토리 (Abstract [GoF95]) | ||
빌더 (Builder [GoF95]) | ||
프로토타입 (Prototype [GoF95]) | ||
싱글턴 (Singleton [GoF95]) | ||
오브젝트 풀 (Object Pool [Grand98]) | ||
분류패턴 (Partitioning Patterns) |
분석 단계에서 일반적으로 생기는 문제를 해결하는데 적합하다. 복잡한 행위자(Actors)를 분류하거나 비교적 큰 기능을 분류해 여러 클래스로 정의하는 방식을 제시한다. |
계층적 초기화 (Layered Initialization [Grand98]) |
필터 (Fiter [BMRSS96]) | ||
컴포지트 (Composiste [GoF95]) | ||
구조화패턴 (Structural Patterns) |
다른 기능을 가진 객체가 협력을 통해 어떤 역할을 수행할 때, 객체를 조직화 시키는 일반적인 방식을 제시한다. 특히 클래스와 객체가 보다 대규모 구조로 구성되는 방법에 대한 해결 안을 제시한다. 특히 별도로 구성된 클래스 라이브러리를 통합하는데 유용하다. 새로운 기능을 구현하기 위해 객체를 구성하는 방식 자체에 초점이 맞춰져 있는 패턴이다. 특징으로 런타임에 객체 컴포지션 구조를 변경할 수 있다는 것으로, 이를 통해 객체 구성에 유동성과 확장성을 추가할 수 있다. |
어댑터 (Adapter [GoF95]) |
이터레이터 (Iterator [GoF95]) | ||
브리지 (Bridge [GoF95]) | ||
퍼케이드 (Facade [GoF95]) | ||
플라이웨이트 (Flyweight [GoF95]) | ||
다이나믹 링키지 (Dynamic Linkage [Rrand98]) | ||
가상 프록시 (Virtual Proxy [Larman98]) | ||
데코레이터 (Decorator [GoF95]) | ||
캐쉬 관리 (Cache Management [Grand98]) | ||
행위패턴 (Behavioral Patterns) |
객체의 행위를 조직화(Organize), 관리(Manage), 연합(Combine)하는데 사용되는 패턴으로, 객체간의 기능을 배분하는 일과 같은 알고리즘 수행에 주로 이용된다. 객체나 클래스에 대한 유형을 정의하는 것이 아니라, 그들 간의 연동에 대한 유형을 제시한다. 특히, 런타임시 따르기 어려운 복잡한 제어 흐름을 결정짓는데 사용된다. |
체인오브리스판서빌리티 (Chain of Responsibility [GoF95]) |
커맨드 (Command [GoF95]) | ||
리틀랭귀지 (Little Language [Grand98]) | ||
메디에이터 (Mediator [GoF95]) | ||
스냅 샷 (Snapshot [Grand98]) | ||
옵저버 (Observer [GoF95]) | ||
스테이트 (State [GoF95]) | ||
널 오브젝트 (Null Object [Woolf97]) | ||
전략 (Strategy [GoF95]) | ||
템플릿 메쏘드 (Template Method [GoF95]) | ||
비지터 (Visitor [GoF95]) |