# Types of Design Patterns

## Intro

가장 많이 사용되고 익숙한 디자인 패턴에 대한 학습

## 객체 지향 프로그램의 디자인 패턴 분류

* **Creational**
* **Structural**
* **Behavioural**

## **Creational**

**Creational Design Patterns** 은 프로그램에서 **객체 생성 프로세스**를 **캡슐화**할 수 있는 방법을 제공한다.

* [Builder Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_builder)
* [Prototype Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_prototype)
* [Singleton Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_singleton)
* [Factory Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_factory)
* [Abstract Factory Pattern](https://seokrae.gitbook.io/sr/java-1/design/creational/_abstract_factory)

## Structural

**Structural design Patterns**은 클래스의 구성(composition), 즉 `클래스`를 **구성하는 방법**과 관련이 있다.

* [Adapter Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_adapter)
* [Bridge Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_bridge)
* [Composite Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_composite)
* [**Decorator Pattern**](https://seokrae.gitbook.io/sr/java-1/design/structural/_decorator)
* [Facade Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_facade)
* [Flyweight Pattern](https://seokrae.gitbook.io/sr/java-1/design/structural/_flyweight)
* [**Proxy Pattern**](https://seokrae.gitbook.io/sr/java-1/design/structural/_proxy)

## Behavioral

**Behavioral design patterns**는 `클래스`와 `객체` 간의 **상호작용**과 **책임위임**을 지시한다.

* [Chain of Responsibility Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_chain_of_responsibility)
* [Command Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_command)
* [**Interpreter Pattern**](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_interpreter)
* [Iterator Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_iterator)
* [Mediator Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_memento)
* [Memento Pattern](https://seokrae.gitbook.io/sr/java-1/design/broken-reference)
* [**Observer Pattern**](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_observer)
* [State Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_state)
* [Strategy Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_strategy)
* [Template Method Pattern](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_template_method)
* [**Visitor Pattern**](https://seokrae.gitbook.io/sr/java-1/design/behavioural/_visitor)
