본문 바로가기
까망 동네/디자인 패턴

💻 디자인 패턴(Design Pattern)이란?

by 까망 하르방 2024. 8. 2.
반응형

👨‍💻 디자인 패턴(Design Pattern)이란?

• SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다.

• 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는

    특정 상황에 적용할 수 있는 방법론

• 자주 반복되는 문제에 해결책

    → 재사용과 팀원과의 의사소통

• 23가지 디자인 패턴이 존재한다.

 연관되는 개념으로는 SOLID 원칙과  클린 코드(Clean Code) 등이 있다.

Gof  (Gang of Four)  디자인 패턴」 으로 알려져 있다.

    → Erich Gamma / Richard Helm / Ralph Johnson / John Vissides

 

 

📌 객체 지향 프로그래밍 5대 원칙 [SOLID]

 

객체 지향 프로그래밍 5대 원칙 [SOLID]

객체지향 프로그래밍에는 「SOLID」 원칙이 있다. 유연하고 확장성이 있는 코드 재사용에 목적을 둔다. • SRP (Single Responsibility Principle, 단일책임) • OCP (Open-Closed Principle, 개방-폐쇄 원칙) • LSP (L

zoosso.tistory.com

 

 

👨‍💻 디자인 패턴 종류

디자인 패턴은 목적에 따라 3가지로 구분할 수 있다.

• 생성 패턴 (Creational Patterns)

• 구조 패턴 (Structural Patterns)

행위 패턴 (Behavioral Patterns)

 


생성 패턴 (Creational Patterns)

• 객체 생성과 조합을 캡슐화하여

    특정 객체가 추가/변경되어도 프로그램 구조 변경을 최소화 한다.

* 캡슐화: 객체가 어떻게 생성되고 결합하는지 보이지 않게 한다.

 

📍 추상 팩토리 메소드 (Abstract Factory Method)

📍 빌더 패턴(Builder)

📍 팩토리 메소드 (Factory)

📍 원형 패턴(Prototype)

📍 싱글톤(Singleton)

 

 

 

구조 패턴 (Structural Patterns)

• 클래스와 객체를 절묘하게 연결하여 동작시킨다.

    ex) 서로 다른 인터페이스에서 단일 인터페이스 제공

📍 어댑터 (Adapter)

📍 브릿지(Bridge)

📍 컴포지트(Composite)

📍 데코레이터 (Decorator)

📍 퍼사드 (Facade)

📍 플라이웨이트 (Flyweight)

📍 프록시(Proxy)

 

 

 

행위 패턴 (Behavioral Patterns)

• 객체나 클래스 사이 소통 방식에 적용되는 패턴이다.

• 진행되는 워크 플로우 정의하여 결합도를 최소화하는 것에 중점을 둔다.

📍 역할 사슬 (Chain of Responsibility)

📍 커맨드(Command)

📍 인터프리터 (Interpreter)

📍 이터레이터 (Iterator)

📍 방문자 (Visitor)

📍 중재자 (Mediator)

📍 메멘토 (Memento)

📍 옵서버(Observer)

📍 상태 (State)

📍 전략 (Strategy) 

📍 템플릿 메소드 (Template Method)

 


👨‍💻 How To Study?

디자인 패턴 학습에 있어서 특정 패턴이 "언제? 왜? 생겼는지"

그리고 "다른 패턴과의 연관성" 위주로 공부하면 좋다.

 

 

📌 (알파벳 순) 목적별로 구분한 디자인 패턴

생성 패턴 (5) 구조 패턴 (7) 행위 패턴 (11)
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Interpreter
Iterator
Visitor
Mediator
Memento
Observer
State
Strategy
Template Method

 

 

📌 디자인 패턴을 Scope (Class / Object)까지 구분하는 경우

Scope 생성 패턴 (5) 구조 패턴 (7) 행위 패턴 (11)
Class Abstract Factory Adapter
Interpreter
Template Method
Object
Builder
Factory Method
Prototype
Singleton
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
Iterator
Visitor
Mediator
Memento
Observer
State
Strategy

 


👨‍💻 Best 디자인 패턴은 무엇일까?

개념자체도 쉽지 않고 헷갈리는 부분도 많은 개념이다.

무엇보다 실무 적용이 가능할지 의문이 든다,,,🙃

• 대부분 문제상황을 커버할 수 있을지

• 담당 개발자가 잘 구현할 수 있을지

• 다른 개발자 협업 및 의사소통이 되는지

• 적용 후에 유지보수가 가능한지

 

적합한 디자인 패턴 적용 여부는 개발자 몫이다.

요구사항 변경으로 디자인 패턴이 변경해야 할 수도 있고,

특정 프로그래밍 언어에 제한(종속)적일 수도 있다.

반응형

댓글