[디자인 패턴] 디자인 패턴이란?
디자인 패턴이란?
"바퀴를 다시 발명하지 마라(Don't reinvent the wheel)"
- 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 훌륭한 해결책
- 이미 만들어져서 잘 되는 것은 처음부터 다시 만들 필요가 없다는 의미
- 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것
GoF 디자인 패턴의 분류
- "Gang of Fout"라 불리는 사람들이 23가지의 디자인 패턴을 정리하고 각각의 디자인 패턴을 분류
- 생성(Creational), 구조(Structural), 행위(Behavioral) 3가지로 분류
생성(Creational) 패턴
- 객체의 생성에 관련된 패턴
- 특정 객체가 생성되어도 프로그램의 구조의 큰 영향을 받지 않음
- 추상 팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리 메서드(Factory Methods)
- 프로토 타입(Prototype)
- 싱글턴(Singleton)
구조(Structural) 패턴
- 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
- 객체를 묶어 새로운 기능 제공
- 어댑터(Adapter)
- 브리지(Bridge)
- 컴포지트(Composite)
- 데커레이터(Decorator)
- 퍼사드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
행위(Behavioral) 패턴
- 클래스나 객체 간의 알고리즘이나 책임 분배에 관련된 패턴
- 한 객체가 수행할 수 없는 작업을 어떻게 분배할지, 그 과정에서 어떻게 결합도를 낮게 유지할지를 목표
- 책임 연쇄(Chain of Responsibility) 패턴
- 커맨드(Command)
- 인터프리터(Interpreter)
- 이터레이터(Iterator)
- 미디에이터(Mediator)
- 메멘토(Memento)
- 옵서버(Observer)
- 스테이트(State)
- 스트래티지(Strategy)
- 템플릿 메서드(Template Method)
- 비지터(Visitor)
참고 자료(Reference)
https://gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-designpattern.html
[기술 면접 질문] 기술 면접 예상 질문 대비하기 - 디자인패턴(Design Pattern)편 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
백엔드 기술 면접 질문(디자인패턴)
디자인 패턴 디자인 패턴 > 싱글톤 패턴 싱글톤 패턴 > 싱글톤 패턴 종류 > Factory Method Pattern Factory Method Pattern > 탬플릿 메소드 패턴 탬플릿 메소드 패턴 > 어댑터 패턴 어댑터 패턴 > Templat
velog.io
[면접을 위한 CS 전공 지식 노트] 01-1 디자인 패턴
면접을 위한 CS 전공 지식 노트위 도서를 읽고 정리하여 기술 면접에 대비하는 글입니다.Creational 생성 패턴객체의 생성에 관련된 패턴특정 객체가 생성되어도 프로그램의 구조에 큰 영향을 받지
velog.io