728x90
01. 디자인 패턴이란?
디자인 패턴
- 자주 사용하는 설계 패턴을 정형화하여 유형별로 최적의 방법으로 개발할 수 있도록 정해둔 설계이다.
- 알고리즘과 유사하지만 명확하게 정답이 있는 형태는 아니다.
- 프로젝트 상황에 맞추어 적용하면 된다.
Gof 디자인 패턴
- GoF(Gang of Four)의 디자인 패턴이라고 한다.
- 객체지향 개념에 따른 설계 중 재사용 시 유용한 설계를 디자인 패턴으로 정리한 것이다.
- Gof의 디자인 패턴은 총 23개이다.
디자인 패턴의 장점
- 개발자 간의 원활한 소통이 가능하다.
- 소프트웨어 구조 파악에 용이하다.
- 재사용을 통한 개발 시간 단축이 가능하다.
- 설계 변경 요청에 대한 유연한 대처가 가능하다.
디자인 패턴의 단점
- 초기 투자 비용이 부담될 수 있다.
02. 생성 패턴, 구조 패턴, 행위 패턴
총 23개의 패턴을 목적에 따라 분류하여 3가지의 패턴으로 나눴다.
생성 패턴
- 객체를 생성하는 것과 관련된 패턴이다.
- 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하는 것을 목적으로 한다.
- 코드의 유연성을 높여준다.
- 생성 패턴으로는 Factory Method, Singleton, Prototype, Builder, Abstract Factory, Chaining 이 있다.
구조 패턴
- 프로그램 내 자료구조/인터페이스 구조 등 프로그램 구조를 설계하는 데 활용 가능한 패턴이다.
- 클래스, 객체들의 구성을 통해 더 큰 구조 만들기가 가능하다.
- 큰 규모의 시스템은 복잡한 구조를 가지는데, 이러한 구조를 개발/유지보수가 쉽게 만들어 준다.
- 구조 패턴으로는 Adapter, Composite, Bridge, Decorator, Facade, Flyweight, Proxy 가 있다.
행위 패턴
- 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것이다.
- 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공한다.
- 독립적으로 일을 처리하고자 할 때 사용한다.
- 행위 패턴으로는 Template Method, Interpreter, Iterator, Observer, Strategy, Visitor, Chain of responsibility, Command, Mediator, State, Memento 가 있다.
03. Singleton Pattern
- 어떠한 클래스(객체)가 유일하게 1개만 존재할 때 사용한다.
- 서로 자원을 공유할 때 사용한다.
- 실세계에서의 프린터를 예시로 생각하면 편하다.
- 실제 프로그래밍에서는 TCP socket 통신에서 서버와 연결된 connect 객체에 주로 사용한다.
04. Adapter Pattern
- 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용을 가능케 한다.
- SOLID 중에서 개방 폐쇄 원칙(OCP)을 따른다.
- 예시로 변환기를 생각하면 된다. (110V to 220V 혹은 220V to 110V)
05. Proxy Pattern
- 무언가를 대신해서 처리하는 것, 즉 대리인이라고 생각하면 된다.
- Proxy Class를 통해서 대신 전달하는 형태로 설계한다.
- 실제 Client는 Proxy로부터 결과를 받는다.
- Cache의 기능으로도 활용이 가능하다.
- SOLID 중에서 개방 폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)을 따른다.
06. Decorator Pattern
- 기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다.
- 확장 필요 시 상속의 대안으로도 활용이 가능하다.
- SOLID 중에서 개방 폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)을 따른다.
07. Observer Pattern
- 변화가 일어났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다.
- 예를 들어, eventListener가 있다.
08. Facade Pattern
- 건물의 앞쪽 정면이라는 뜻이다.
- 복잡한 의존 관계가 있을 때, 중간에 Facade 객체를 두고, 여기에서 제공하는 Interface만 활용해 기능을 사용하는 방식이다.
- Facade는 자신이 가진 각 클래스의 기능을 명확히 알아야 한다.
09. Strategy Pattern
- 전략 패턴으로 불리며, 객체 지향의 꽃이라고 할 수 있다.
- 유사한 행위들을 캡슐화한다.
- 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아니라, 전략만 변경하여 유연하게 확장한다.
- SOLID 중에서 개방 폐쇄 원칙(OCP)와 의존 역전 원칙(DIP) 따른다.
- 예시로, Encoder가 있다.
개념 위주로 글을 작성해 봤는데, 추후에 디자인 패턴에 대해서는 따로 카테고리를 하나 만들어서 세세하게 정리할 예정이다!
728x90