
▶ Builder: 인스턴스를 조립하여 만드는 구조, 객체를 생성하는 방법과 객체를 구현하는 방법을 분리, 생성과 표기를 분리해서 복잡한 객체를 생성
▶ Factory method: 상위 클래스는 인터페이스 정의, 하위 클래스는 인스턴스를 생성
▶ Singleton: 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며 어디에서든 참조할수 있도록, 한 클래스에 한 객체만 존재
▶ Abstract Factory: 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공, 동일한 주제의 다른 팩토리를 묶음
▶ Prototype: 일반적인 원형을 만들어 놓고 복사한 후 필요한 부분만 수정하여 사용, 기존 객체를 복제함으로써 객체를 생성
▶ Adapter: 클래스 재사용을 위해 중간에서 맞춰주는 역할을 하는 인터페이스 만드는 패턴
▶ Bridge: 기능과 구현 클래스 계층 연결, 추상화된 부분까지 변경해야 하는 경우 활용
▶ Composite: 부분-전체 계층을 표현하는 패턴, 복합 객체와 단일 객체를 동일 취급
▶ Decorator: 필요한 기능을 추가해 나가는 설계 패턴, 기능을 동적으로 유연하게 확장
▶ Flywieght: 메모리를 절약하고, 클래스의 경량화를 목적으로 하는 패턴
▶ Facade: 통합된 인터페이스 제공, 단순한 인터페이스를 제공함으로써 결합도를 낮춤
▶ Proxy: 특정 객체로의 접근을 제어하기 위함, 대리 객체 생성하여 수행
▶ Mediator: 상호 작용의 유연한변경을 지원하는 중재자
▶ Interpreter: 캡술화, 언어의 다양한 해석을 맡는 클래스를 작성
▶ Iterator: 내부 구조 노출 없이 원소를 순차적으로 접근가능, 반복자를 사용하여 접근
▶ Template method: 상위 클래스는 추상메서드를 통해, 하위 클래스는 세부처리를 구체화
▶ Observer: 한 객체의 상태가 바뀌면 의존하는 다른 객체들이 자동으로 내용 갱신, 일대다
▶ State: 객체의 상태에 따라 행위 내용을 변경, 객체 상태를 캡슐화하여 클래스화함
▶ Visitor: 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
▶ Command: 실행될 기능을 캡슐화, 요구사항을 객체로 캡슐화
▶ Strategy: 알고리즘 군을 정의, 행위 객체를 클래스로 캡슐화해 동적으로 행위를 변환
▶ Memento: UNDO기능을 개발할때 사용하는 패턴
▶ Chain of resposibility: 한 요청을 2개 이상의 객체에서 처리, 하드코딩되어 있는 경우