2023.07.28

디자인 패턴이란? 반복적으로 일어나는 문제 상황을 빠르게 해결하기 위한 방식들을 디자인 패턴이라고 부르고 목적에 따라서, 생성, 구조, 행동 패턴으로 나뉩니다. (정처기에도 나오니까 참고)


생성 패턴

인스턴스를 만드는 절차를 추상화하는 방법을 말한다.

  • 싱글톤 : 객체가 1개만 존재하고, 이를 전역적으로 접근이 가능한 디자인 패턴
  • 빌더 : 복합 객체의 생성과 표현을 분리해서 동일한 생성 절차에서 다른 결과를 만들수 있는 패턴
  • 팩토리 : 객체 생성을 서브 클래스로 위미해서 캡슐화하는 패턴
  • 추상 팩토리리 : 구체적인 클래스를 지정하지 않고 인터페이스를 통해 연관되는 객체들을 그룹으로 표현한 패턴
  • 프로토 타입 : 원본 객체를 복사함으로 객체를 생성하는 패턴

구조 패턴

클래스나 객체를 조합해서 더 큰 구조를 만드는 방법을 말한다.

  • 어댑터 : 클래스의 인터페이스를 다른 인터페이스로 변환해 다른 클래스도 이용할 수 있게하는 패턴
  • 퍼싸드 : 서브시스템에 있는 인터페이스 집합을 통합된 인터페이스(Wrapper)로 제공하는 패턴
  • 프록시 : 접근이 어려운 객체를 접근하기 위해 placeholder 등을 제공하는 패턴
  • 브릿지 : 구현부에서 추상층을 분리해 독립적으로 확장할 수 있는 패턴
  • 컴포지드 : 객체들의 관계를 트리 구조로 구성해 복합, 단일 객체를 구분없이 다루는 패턴
  • 데코레이터 : 주어지 상황 및 용도에 따라서 다른 객체를 덧붙이는 패턴

행동 패턴

객체나 클래스 사이의 알고리즘이나 책임을 분배하는 방법을 말한다.

  • 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리하는 패턴
  • 전략 : 동일 계열의 알고리즘을 정의하고 캡슐화하여 상호교환이 가능하도록 하는 패턴
  • 커맨드 : 요청을 객체 형태로 캡슐화해서 재사용하거나 취소할 수 있도록 저장하는 패턴
  • 메멘토 : 객체가 특정 상태로 돌아갈 수 있게 정의하는 패턴
  • 옵저버 : 객체 상태가 변할때 관련 객체들에게 변경을 통지하고 갱신할 수 있도록 하는 패턴
  • 책임 연쇄: 요청을 받는 객체를 연쇄적으로 묶어서 객체에 따라 요청을 전달하는 패턴
  • 인터프리터 : 특정 언어의 문법 표현을 정의하는 패턴
  • 메디에이터 : 객체들의 상호작용을 캡슐화하여 새로운 객체로 정의하는 패턴
  • 탬플릿 메소드 : 상위 클래스에 골격을 통해 실제 처리는 서브클래스에서 처리하도록 하는 패턴


면접 전이라면 여기서 자주 나오는 싱글톤, 어댑터, 옵저버, 전략 패턴의 개념을 주의 깊게 보는 것을 추천한다. 그 외에도 디자인 패턴은 개발을 할때 도움이 되기 때문에 알아두는 것이 좋다. 해당 내용에 대해서 JAVA로 설명하고, 정리해두겠다.



Leave a comment