생성 패턴 | Builder | 복잡한 인스턴스를 조립하여 만드는 구조 / 생성과 표기를 분리해서 복잡한 객체를 생성 |
| Prototype | 기존 객체를 복제함으로써 객체를 생성 |
| Factory Method | 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 상위 클래스에서는 인스턴스를 만드는 방법만 결정 / 생성할 객체의 클래스를 국한하지 않고 개체 생성 |
| Abstract Method | 동일한 주제의 다른 팩토리를 묶음 |
| Singleton | 한 클래스에서 한 객체만 존재하도록 제한 |
구조 패턴 | Bridge | 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 추상화된 부분과 실제 구현 부분을 독립적으로 확장 |
| Decorator | 기존에 구현되어 있는 클래스에 필요한 기능을 추가해나가는 설계 패턴 |
| Facade | 복잡한 시스템에 대해여 단순한 인터페이스를 제공하여 사용자와 시스템 간의 결함도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴 / 오류에 대해서 단위별로 확인 |
| Flyweight | 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리 절약, 클래스를 경량화함 |
| Proxy | 실체 객체에 대한 대리 객체, 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만듦 => 메모리 용량 아끼기 |
| Composite | 객체들의 관계를 트리구조로 만들어 부분-전체 계층을 표현하는 패턴 |
| Adapter | 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역햘을 하는 인터페이스를 만드는 패턴 |
행위 패턴 | Mediator | 객체의 수가 너무 많아졌을 때 중간에서 이를 통제, 지시할 수 있는 중재자를 두고, 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 디자인 패턴 |
| Interpreter | 여러 형태의 언어 구문을 해석할 수 있게 만드는 디자인 패턴 |
| Iterator | 내부구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 디자인 패턴 |
| Template Method | 작업 처리의 일부분을 서브 클래스를 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 |
| Observer | 객체의 상태 변하에 따라 다른 객체의 상태도 연동하여 변경된 내용으로 갱신해주는 디자인 패턴, 일대다 의존 |
| State | 객체의 상태에 따라 행위 내용을 변경 |
| Visitor | 처리 기능을 분리하여 별도의 클래스를 만들어놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 할 수 있도록 만드는 패턴 |
| Command | 요구사항을 객체로 캡슐화한 디자인 패턴 |
| Strategy | 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 디자인 패턴 |
| Memento | 객체의 정보를 저장할 필요가 있을 때 적용, Undo기능을 개발할 때 사용하는 패턴 |
| Chain of Responsibility | 한 요청을 2개 이상의 객체에서 처리할 때 사용하는 디자인 패턴 |