본문 바로가기
공부/디자인패턴

디자인 패턴

by 개발자5 2023. 2. 3.
개발자5의 이야기

약 15년간 개발자로 있으면서 개발자에게 중요하다고 생각하는 몇 가지 중 하나를 꼽으라면 바로 <디자인 패턴>이다.

사실 나는 기억력이 매우 나쁜 편이라 아직도 패턴 이름을 다 매칭 시키지 못한다. 어떤 구현에 들어갈 때 ㅇㅇ패턴을 사용하면 좋을 것 같군, 혹은 코드를 보고 ㅇㅇ패턴을 사용했군. 이라고 말하지 못하지만, 중요한 것은 상황에 맞는 적절한 패턴을 찾아 구현할 수 있으면 된다고 생각한다.

우리가 구현하는 많은 코드들은 엄청나게 패턴을 사용하고 있지만 실제로 패턴을 사용하는지 조차 인지하지 못하고 사용하는 경우가 많다. 사실 인지할 필요가 없이 개발하다보면 그냥 이렇게 구현해야겠다. 라고 떠오르는 경우가 대부분이므로 이부분이 문제라고 말하고 싶은 것은 아니다.

 

어쨋든, 디자인 패턴에 대해 한번 쯤 정리하면 좋겠다는 생각 & 이제는 패턴이름 좀 기억해줘야겠다는 생각으로 디자인 패턴에 대한 내용을 기록하고자 한다.

 

 

디자인 패턴의 종류

GoF의 디자인 패턴은 총 23가지 이며, 크게 생성 / 구조 / 행위 패턴으로 나뉜다.

생성패턴 (5) 구조패턴 (7) 행위패턴 (11)
Singleton (싱글톤) Bridge (브릿지) Interpreter (인터프리터)
Factory Method (팩토리 메소드) Decorator (데코레이터) Template Method (템플릿 메소드)
Abstract Factory (추상 팩토리) Facade (퍼사드) Chain of Responsibility (책임 연쇄)
Prototype (프로토타입) Flyweight (플라이웨이트) Command (커맨드)
Bulider (빌더) Proxy (프록시) Iterator (이터레이터)
  Composite (컴포짓) Mediator (중재자)
  Adapter (어댑터) Memento (메멘토)
    Obsever (옵저버)
    State (상태)
    Strategy (전략)
    Visitor (비지터)

 

 

1. 생성 패턴 (5)
패턴 설명
Singleton
(싱글톤)
유일하게 하나의 인스턴스만 존재하도록 보장. 생성된 인스턴스는 어디서든 참조할 수 있음.
프린터 하나를 여러 사용자가 공유하고자할 때 사용자마다 프린터 인스턴스를 생성하여 프린트를 하고자 하면 안됨. → 프린터 인스턴스는 하나만 생성. 여러 사용자는 공통된 하나의 프린터 인스턴스에 접근하도록 해야 함.
Factory Method
(팩토리 메소드)
객체 생성을 위한 인터페이스는 상위 클래스에서 정의하되, 구체적인 객체 생성은 하위 클래스에게 위임.
 
Abstract Factory
(추상 팩토리)
관련성을 가지는 객체의 집합을 생성하는 인터페이스를 제공.
엘레베이터에는 Motor와 Door 부품이 들어간다. Samsung 엘레베이터에는 Samsung Motor와 Door, LG 엘레베이터에는 LG Motor와 Door, A사 엘레베이터는 Motor와 Door를 직접 만들지 않아 Samsung Motor와 LG Door를 사용한다. → 각각 엘레베이터마다 필요한 집합(Motor와 Door)을 생성한다.
Prototype
(프로토타입)
견본 객체를 사용하여 동일한 객체를 생성.
 
Bulider
(빌더)
객체 생성과정을 캡슐화함. 복합객체를 구성하는 부품들을 Builder에 정의하고, 외부 클래스에서 복합객체를 만들 때 이들 부품들을 조합해서 복합객체를 만들어줌.
 

 

2. 구조 패턴 (7)
패턴 설명
Bridge
(브릿지)
 
 
Decoration
(데코레이션)
 
 
Facade
(퍼사드)
 
 
Flyweight
(플라이웨이트)
 
 
Proxy
(프록시)
 
 
Composite
(컴포짓)
 
 
Adapter
(어댑터)
 
 

 

3. 행위 패턴 (11)
패턴 설명
Interpreter
(인터프리터)
 
 
Template Method
(템플릿 메소드)
 
 
Chain of Responsibility
(책임 연쇄)
 
 
Command
(커맨드)
 
 
Iterator
(이터레이터)
 
 
Mediator
(중재자)


 
 
Memento
(메멘토)


 
 
Obsever
(옵저버)


 
 
State
(상태)


 
 
Strategy
(전략)


 
 
Visitor
(비지터)

 
 

 

 

 

 

 

참고할만한 사이트

1. 한빛미디어, 개발 현장에서 많이 쓰는 14가지 디자인 패턴의 종류와 정의 - 

https://post.naver.com/viewer/postView.naver?volumeNo=33471967&memberNo=25379965&vType=VERTICAL