패턴은 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다.
- 컨텍스트(context) : 패턴이 적용되는 상황, 반복적으로 일어날 수 있는 상황이어야 한다.
- 문제(problem) : 그 컨텍스트 내에서 이루고자 하는 목표, 컨텍스트 내에서 생길 수 있는 제약조건이 포함됨.
- 해결책(sloution) : 일련의 제약조건 속에서 누가 적용해도 목표를 이룰 수 있는 일반적인 디자인
어떤 컨텍스트 내에서 일련의 제약조건에 의해 영향을 받는 문제가 발생했다면, 그 제약조건 내에서 목적 달성을 위한 해결책이 되는 디자인을 적용하면 된다.
- 패턴의 배경, 용도, 해결책, 결과 등이 모든 내용이 수록되어 있다.
- GOF의 디자인 패턴(http://www.yes24.com/Product/Goods/17525598)
https://github.com/Effective-Java-Camp/head-first-design-pattern/wiki
- 객체 인스턴스를 생성하는 패턴
- 클라와 그 클라가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어주는 패턴
- 클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 패턴
- 클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴
생성 패턴 | 구조 패턴 | 행동 패턴 |
---|---|---|
싱글톤 추상 팩토리 팩토리 메소드 빌더 프로토타입 |
컴포지트 프록시 데코레이터 퍼사드 어댑터 플라이웨이트 브리지 |
템플릿 메소드 싱글톤 반복자 옵저버 상태 전략 인터프리터 중재자 비지터 메멘토 |
- 클래스 사이의 관계가 상속으로 어떻게 정의되는지를 다룬다.
- 클래스 사이의 관계는 대부분 컴파일할 때 결정된다.
- 객체 사이의 관계를 다룬다.
- 객체 사이의 관계는 보통 구성으로 정의된다.
- 일반적으로 실행 중에 관계가 결정되므로 보다 동적이고 유연하다
클래스 패턴 | 객체 패턴 |
---|---|
템플릿 메소드 팩토리 메소드 어댑터 인터프리터 |
컴포지트 데코레이터 프록시 퍼사드 전략 커맨드 옵저버 프로토타입 싱글톤 추상 팩토리 |