- 문제와 그 해법의 핵심을 기술한 것.
- 여러 환경에서 재사용 될 수 있음
- 축적된 지혜와 경험에 대한 기술
- 공통 문제에 대한 잘 시도된 해결채깅며, 상세한 명세가 아님
- 재사용에서 패턴의 역할
- 패턴과 패턴 언어는 모범 사례와 바람직한 설계를 기술하고 다른 사람들이 이 경험을 재사용할 수 있게 경험을 담아내는 방법이다.
- 재사용 가능한 객체 지향 소프트웨어를 설계하는 것.
- 코드는 간결해야하고 누구에게나 유지보수 가능해야하며 성능은 보장되어야 하는 것.
종류
- 생성 패턴 (Creational Pattern)
- 추상 팩토리 메서드 (Abstract Factory Methods)
- 팩토리 메서드 (Factory Methods)
- 빌더 (Builder)
- 프로토타입 (Prototype)
- 싱글톤 (Singleton)
- 구조 패턴 (Structural Pattern)
- 어댑터 (Adapter)
- 브리지 (Bridge)
- 컴퍼지트 (Composite)
- 데코레이터 (Decorator)
- 퍼사드 (Facade)
- 플라이웨이트 (Flyweight)
- 프록시 (Proxy)
- 행위 패턴 (Behavioral Pattern)
- 책임 연쇄 (Chain of Responsibility)
- 커맨드 (Command)
- 인터프리터 (Interpreter)
- 반복자 (Iterator)
- 중재자 (Mediator)
- 메멘토 (Memento)
- 옵저버 (Observer)
- 상태 (State)
- 전략 (Strategy)
- 템플릿 메서드 (Template Method)
- 비지터 (Visitor)
일부 패턴은 남용되고(Singleton) 다른 패턴은 과소평가(Command)되는 것 같다.
특히 게임(Flyweight and Observer)과의 관련성을 탐구하고 싶고 가끔은 패턴이 더 큰 프로그래밍 분야(Prototype and State)에 어떻게 얽혀 있는지 보고자 한다.
Command
Flyweight
Observer
Prototype
Singleton
State