디자인 패턴이란?

0. 디자인 패턴이란?

  • 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책
  • 코드에서 자주 반복되는 디자인 문제를 해결하기 위해 미리 만들어진 패턴

1. 디자인 패턴 학습 이유

  • 소프트웨어 디자인의 일반적인 문제들에 대해 시도되고 검증된 해결책을 모은 것
  • 디자인 패턴을 배우게 되면 객체 지향 디자인의 원칙을 사용해 많은 종류의 문제를 해결 가능

2. 디자인 패턴에 대한 비판

  • 약한 형식 프로그래밍 언어를 위한 클루지로 작동
    • 클루지(Kluge) : 세련되지 않지만, 효과적인 해결책
    • 예를 들어, 전략 패턴 → 간단한 익명(람다) 함수로 구현 가능
  • 비효율적인 해결책
    • 디자인 패턴을 신봉하여 프로젝트 맥락에 따라 적용하지 않고 문자 그대로 구현
  • 잘못된 사용
    • 디자인 패턴을 갓 공부하고 바로 적용하려고 함 → 더 간단한 코드로 문제 해결이 가능함에도…

3. 디자인 패턴 분류

  • 생성 패턴 : 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘들을 제공
    • 팩토리 메서드, 추상 팩토리, 빌더, 프로토타입, 싱글톤
  • 구조 패턴 : 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법 설명
    • 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트, 프록시
  • 행동 패턴 : 객체 간의 효과적인 의사소통과 책임 할당을 처리
    • 책임 연쇄, 커맨드, 반복자, 중재자, 메멘토, 옵서버, 상태, 전략, 템플릿 메서드, 비지터

Reference