기술면접/디자인패턴

[디자인 패턴] 디자인 패턴이란?

dev.Lactea 2024. 8. 19. 22:58

디자인 패턴이란?

"바퀴를 다시 발명하지 마라(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

https://velog.io/@min9288/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4

 

백엔드 기술 면접 질문(디자인패턴)

디자인 패턴 디자인 패턴 > 싱글톤 패턴 싱글톤 패턴 > 싱글톤 패턴 종류 > Factory Method Pattern Factory Method Pattern > 탬플릿 메소드 패턴 탬플릿 메소드 패턴 > 어댑터 패턴 어댑터 패턴 > Templat

velog.io

https://velog.io/@blcklamb/%EB%A9%B4%EC%A0%91%EC%9D%84-%EC%9C%84%ED%95%9C-CS-%EC%A0%84%EA%B3%B5-%EC%A7%80%EC%8B%9D-%EB%85%B8%ED%8A%B8-01-1-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4

 

[면접을 위한 CS 전공 지식 노트] 01-1 디자인 패턴

면접을 위한 CS 전공 지식 노트위 도서를 읽고 정리하여 기술 면접에 대비하는 글입니다.Creational 생성 패턴객체의 생성에 관련된 패턴특정 객체가 생성되어도 프로그램의 구조에 큰 영향을 받지

velog.io