Design Patterns, 제대로 이해하기

2021. 12. 26. 00:09ETC/Design Patterns

반응형

안녕하세요. GoF 디자인 패턴을 정리하고자 합니다.

디자인 패턴은 일주일 전부터 공부를 시작했는데, 스스로 설명하듯 적는게 익히는데 도움이 클 것같아

정말 오랜만에 시리즈로 포스팅하려 합니다 👊🏻

 

아래의 책들을 보며 정리했습니다.

 

GoF Design Patterns

쉽게 배워 바로 써먹는 디자인 패턴

Head First Design Patterns, 2nd Edition

 

 

아래는 디자인 패턴을 분류한 테이블입니다.

 

 

Scope에 따라 Class와 Object로 분류합니다.

Class는 상속과 관련된 패턴이며, Object는 연관된 객체들과 관련된 패턴입니다.

제가 이해하기로는 Class가 조금 더 수직적인 관계를 다루지 않나 싶습니다.

 

Creational Pattern

Class Scope는 객체 작성의 일부를 하위 클래스로 전임시킵니다.

Object Scope는 객체 작성의 일부를 다른 객체 전임시킵니다.

 

Structural Pattern

Class Scope는 상속을 통해 클래스들을 구성compose합니다. (상속 관계 클래스간의 구성쯤으로 해석해봅니다.)

Object Scope는 객체를 조립assemble하는 방법에 대해 다룹니다. (연관된 클래스들의 관계 구성쯤으로 해석해봅니다.)

 

Behavioral Pattern

Class Scope는 상속을 통한 알고리즘흐름 제어flow of control에 대해 다룹니다.

Object Scope는 단일 객체로는 수행할 수 없는 그룹화된 객체가 기능을 수행하기 위해 협력하는 방법에 대해 다룹니다.

 

 

 

패턴에 대한 코드는 Github 링크에서 확인하실 수 있습니다.

 

Creational Patterns

✔️ Singleton    클래스 당 인스턴스를 하나만 존재하게 하고, 전역적인 접근 지점을 제공하는 패턴

✔️ Factory Method    상위 클래스에서 객체의 인터페이스를 정의하고, 하위 클래스가 객체를 생성할지를 결정하도록 하는 패턴

✔️ Abstract Factory   추상화된 클래스에 의존하여 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴

✔️ Builder    복합 객체를 생성하는 클래스의 구현부와 표현 클래스를 분리하는 패턴

✔️ Prototype   원본을 복제하여 새 객체를 만드는 패턴

 

 

Structural Patterns

✔️ Adapter   클래스의 인터페이스를 필요로 하는 다른 인터페이스로 변환

✔️ Bridge   밀접한 클래스 집합을 독립적으로 변형가능 하도록 구현부에서 추상층을 분리하는 패턴

✔️ Composite   객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴

✔️ Decorator   주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴

✔️ Facade    서브시스템의 통일된 인터페이스에 대한 통합된 인터페이스를 제공하는 패턴

✔️ Flyweight   중복을 제거하고 공유를 통해 자원을 효율적으로 사용하는 패턴

✔️ Proxy   실제 객체에 직접 접근하지 않고 접근을 제어하는 대리자를 제공하는 패턴

 

 

Behavioral Patterns

✔️ Interpreter    일련의 규칙으로 정의된 문법적 언어를 해석하는 패턴

✔️ Template Method    알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘을 정의 하는 패턴

✔️ Chain of Responsibility   요청을 수신 받는 객체들을 체인처럼 묶어 처리 기회를 주어 연쇄적으로 처리하는 패턴

✔️ Command   요청을 객체의 형태로 캡슐화하는 패턴

✔️ Iterator    내부 구조를 노출하지 않고 집한체를 통해 원소 객체에 순차적으로 접근할 수 있는 방법을 제공하는 패턴

✔️ Memento   객체의 상태를 저장하여 이전 상태로 복구하는 패턴

✔️ Mediator    모든 클래스간의 상호작용을 캡슐화하여 하나의 클래스에 위임하여 처리하는 패턴

✔️ Observer    한 개체의 상태가 변경될 때 모든 종속 개체가 자동으로 알림을 받고 업데이트되는 패턴

✔️ State    내부 상태가 변경될 때 해당 객체의 행동을 변경시키는 패턴

✔️ Strategy    동일 계열의 알고리즘군을 정의하고, 각 알고리즘을 캡슐화하며 이들을 상호교환이 가능하도록 하는 패턴

✔️ Visitor    알고리즘을 객체 구조에서 분리시키는 디자인 패턴

 

 

 

반응형

'ETC > Design Patterns' 카테고리의 다른 글

Design Pattern, Factory Method  (0) 2022.01.03
Design Pattern, Template Method  (0) 2022.01.01
Design Pattern, Strategy  (0) 2021.12.29
Design Pattern, Builder  (1) 2021.12.29
Design Pattern, Facade  (0) 2021.12.26