Spring Framework

GoF(Gang of Four) 대자인 패턴

진청우 2023. 1. 17. 22:01

4명의 갱..?이 뭐냐 싶었는데 소프트웨어 설계, 즉 설계 디자인에 템플릿을 제시한 사람들 네명이라고 함.

 

Erich Gamma, Richard Helm, Ralph Johnson, John Vissides 네명이라는데

어쩌다... 위대한 업적이셔서 이렇게 GoF 라면서 남긴 걸까.... 다른 이름을 붙이지

 

 

 

 

디자인 패턴의 장점

개발자 간 협업을 원활히 함

소프트웨어 구조를 용이하게 파악할 수 있음

재사용을 통해 개발 시간을 단축

설계 변경이 있을 경우 비교적 조치하기 용이함

 

단 객체지향적 설계를 고려하여 반영해야 한다.

 

생성 패턴 구조 패턴 행동 패턴
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Stratery
Template Method
Visitor

 

 

생성 패턴

 

추상 팩토리 Abstract Factory

- 구체적인 클래스를 지정하지 않고 인터페이스를 통해 연관되는 개체들을 묶어줌

 

빌더 Builder

- 객체의 생성과 표현을 분리하여 객체를 생성

 

팩토리 메소드 Factory Method

- 객체 생성을 서브클래스로 분리하여 위임 (캡슐화)

 

프로토타입 Prototype

- 원본 객체를 복사하여 객체를 생성 (클론)

 

싱글톤 Singleton

- 한 클래스마다 인스턴스를 하나만 생성하여 어디서든 참조

 

구조 패턴

 

어댑터 Adapter

- 클래스의 인터페이스를 어떤 클래스에서든 이용할 수 있도록 변환


브리지 Bridge

- 구현부에서 추상층을 분리하여 각자 독립적으로 변형하고 확장할 수 있도록 함

 

컴포지트 Composite

- 객체들의 관계를 트리 구조로 구성하여 표현하는 방식으로 복합 객체와 단일 객체를 구분없이 다룸

 

데코레이터 Decorator

- 주어진 상황에 따라 객체이 다른 객체를 덧붙임

 

파사드 Facade

- 서브 시스템에 있는 인터페이스 집합에 대해 통합된 인터페이스 제공

 

플라이웨이트 Flyweight

- 크기가 다른 여러 개의 객체를 매번 생성하지 않고 최대한 공유하여 사용하도록 메모리 절약

 

프록시 Proxy

- 실제 기능을 수행하는 객체 대신 가상의 객체를 사용해 로직의 흐름을 제어

 

 

행동 패턴

 

책임 연쇄 Chain of Responsibility- 요청을 받는 객체를 연쇄적으로 묶어 요청을 처리하는 객체를 만날 때까지 객체 Chain을 따라 요청을 전달


커맨드Command

- 요청을 객체의 형태로 캡슐화하여 재사용하거나 취소


인터프리터 Interpreter

- 특정 언어의 문법 표현을 정의


반복자 Iterator

- 컬렉션 구현 방법을 노출하지 않으면서 모든 항목에 접근할 수 있는 방법을 제공


중재자 Mediator

- 한 집합에 속해있는 객체들의 상호작용을 캡슐화하여 새로운 객체로 정의


메멘토 Memento

- 객체가 특정 상태로 다시 되돌아 올 수 있도록 내부 상태를 실체화

 

옵저버 Observer

- 객체 상태가 변할 때 관련 객체들이 그 변화를 전달받아 자동으로 갱신

 

상태 State

- 객체의 상태에 따라 동일한 동작을 다르게 처리

 

전략 Stratery

- 동일 계열의 알고리즘군을 정의하고 캡슐화하여 상호 교환이 가능하게 함

 

템플릿 메소드 Template Method

- 상위 클래스는 알고리즘의 골격만을 작성하고 구체적인 처리는 서브 클래스로 위임

 

방문자 Visitor

- 객체의 원소에 대해 행할 연산을 분리하여 별도의 클래스로 구성