Spring

GoF 디자인 패턴

codewalker 2021. 4. 14. 23:08

디자인 패턴

자주 사용하는 설계 패턴을 정형화해서 이를 유형별로 가장 최적의 방법으로 개발할 수 있도록 정해둔 설계

 

GoF(Gang of Four) 디자인 패턴

여러 프로그래머들의 소프트웨어 설계 방식을 공유하기 위해 나온 것으로, 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 디자인 패턴을 정리한 것

 

디자인 패턴의 장점

  • 개발자 간의 원활한 소통
  • 소프트 웨어 구조 파악 용이
  • 재사용을 통한 개발시간 단축
  • 설계 변경 요청에 대한 유용한 대처

 

생성 패턴

- 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하고 코드의 유연성을 높여줌

  • Factory Method
  • Singleton
  • Prototype
  • Builder
  • Abstract Factory
  • (Chaining)

 

구조 패턴

- 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용될 수 있는 패턴

- 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해줌

- 큰 규모의 시스템에서는 많은 클래스들이 서로 의존성을 가지게 되는데, 이런 복잡한 구조를 개발하기 쉽고, 유지보수하기 쉽게 해줌

  • Adapter
  • Composite
  • Bridge
  • Decorator
  • Facade
  • Flyweight
  • Proxy

 

행위 패턴

- 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로, 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공함

- 행위 패턴은 행위 관련 패턴을 사용하여 독립적으로 일을 처리하고자 할 때 사용함

  • Template Method
  • Interpreter
  • Iterator
  • Observer
  • Strategy
  • Visitor
  • Chain of Reponsibility
  • Command
  • Mediator
  • State
  • Memento

 

 

Singleton Pattern

싱글톤 패턴은 어떠한 객체가 유일하게 1개만 존재할 때 사용한다.

서로 자원을 공유할 때 사용하는 것으로, TCP Socket 통신에서 서버와 연결된 connect 객체에 주로 사용한다.

 

Singleton

 

Adapter Pattern

Adapter는 실생활에서는 110v를 220v로 변경해주는 변환기를 예로 들 수 있다. 즉 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 한다. SOLID 중에서 개방폐쇄 원칙(OCP)를 따른다.

Adapter

 

Proxy Pattern

Proxy는 대리인이라는 뜻으로 뭔가를 대신해서 처리하는 것이다.

Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로부터 결과를 받는다.

Cache의 기능으로도 활용이 가능하다.

SOLID 중에서 개방폐쇄 원칙(OCP)과 의존역전 원칙(DIP)를 따른다.

Proxy

 

Decorator Pattern

데코레이터 패턴은 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다.

확장이 필요한 경우 상속의 대안으로도 활용한다.

SOLID 중에서 개방폐쇄 원칙(OCP)과 의존역전 원칙(DIP)를 따른다.

Decorator

 

Observer Pattern

관찰자 패턴은 변화가 일어났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다.

많이 보이는 곳은 event listener에서 해당 패턴을 사용하고 있다.

Observer

 

Facade Pattern

Facade는 건물의 앞쪽 정면이라는 뜻을 가진다. 여러 개의 객체와 실제 사용하는 서브 객체 사이에 복잡한 의존관계가 있을 때, 중간에 Facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식이다.

Facade는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 한다.

Facade

 

Strategy Pattern

전략 패턴은 객체지향의 꽃이다.

유사한 행위들을 캡슐화하여 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경하여 유연하게 확장하는 패턴이다.

SOLID 중에서 개방폐쇄 원칙(OCP)과 의존역전 원칙(DIP)를 따른다.

Strategy