프로그래밍 디자인 패턴
- 특정 문제 상황에서 해당 문제를 해결하는 방법을 정형화 한것
- ex) 싱글톤..
- GoF(Gang of Four)
- "특정한 상황에서 일반적 설계문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명이다."
디자인 패턴의 분류
목적을 기준으로 한 분류
- 생성 (Creational Pattern)
객체의 생성 과정에 관여하는 패턴
- 구조 (Structural Pattern)
클래스나 객체의 구성을 통해 더 큰 구조로 만들 수 있게 해주는 것과 관련된 패턴
- 행위 (Behavioral Pattern)
패턴을 주로 클래스에 적용하는지 아니면 객체에 적용하는지에 따라 구분되는 패턴
범위를 기준으로 한 분류
- 클래스 패턴 (Class Pattern)
클래스들과 하위 클래스 간의 관계를 다루는 패턴
컴파일 시에 관계가 결정
- 객체 패턴 (Object Patterns)
객체 간의 관계를 다루며 보통 구성을 통해 정의
객체 패턴은 일반적으로 실행시간에 관계가 생성되기 때문에 더 동적이면서 유연
디자인 패턴의 종류
- 싱글턴 패턴 (Singleton Pattern)
- 목적 : 생성
- 범위 : 객체
객체의 생성에 관련된 패턴으로서 특정 클래스의 인스턴스가 오직 하나임을 보장하고 이 인스턴스에 접근할 방법을 제공
- 퍼사드 패턴 (Facade Pattern)
- 목적 : 구조
- 범위 : 객체
개발자가 사용해야 하는 서브 시스템의 가장 앞쪽에 위치하면서 하위 시스템에 있는 객체들을 사용할 수 있도록 하는 역할을 함.
시스템의 복잡성을 줄이기 위해 서브 시스템을 구조화하고 서브 시스템으로의 접근을 하나의 퍼사드 객체로 제공하는 패턴
- 옵저버 패턴 (Observer Pattern)
- 목적 : 행위
- 범위 : 객체
객체의 상태변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 패턴
- 스트래티지 패턴 (Strategy Pattern)
- 목적 : 행위
- 범위 : 객체
알고리즘을 담당하는 각각의 클래스를 만들어 책임을 분산하기 위한 목적으로 만든 행위 패턴
- 팩토리 패턴 (Factory Pattern)
- 목적 : 생성
- 범위 : 클래스
객체를 생성하기 위한 인터페이스를 정의하지만 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 하위 클래스에서 이루어지도록 인스턴스 생성의 책임을 떠넘기는 패턴
- 어댑터 패턴 (Adapter Pattern)
- 목적 : 구조
- 범위 : 클래스, 객체
클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 동작하도록 해줌
출처: 야곰