CHAPTER 13.실전 디자인 패턴
디자인 패턴

CHAPTER 13.실전 디자인 패턴

반응형

이번 글에서는

  • 해당 챕터에서는 실제 디자인 패턴을 적용하는 방법에 대해서 학습합니다.
  • 패턴 카탈로그에 대해 학습한뒤 가장 훌륭한 패턴 카탈로그 저서인 GoF 디자인 패턴의 서술 방식을 살펴봅니다.
  • 디자인 패턴에서 사용되는 전문 용어를 살펴봅니다.
  • 디자인 패턴을 분류하는 방법들에 대해서 학습합니다.
  • 안티 패턴에 대해서 알아봅니다.

패턴 카탈로그(GoF 템플릿) 살펴보기

  • 패턴 카탈로그는 아래와 같이 이루어져 있습니다.
    • title(제목)
    • Intent(용도)
    • Motivation(동기)
    • Applicablity(적용 대상)
    • Strcture(구조)
    • Participants(구성 요소)
    • Collaboartions(협동)
    • Consequences(결과)
    • Implementation/SampleCode(구현 및 샘플 코드)
    • Know Uses(사용 예)
    • Related Patterns(연관 패턴)
  • 위와 같은 서술 방식은 디자인 패턴을 익히고 패턴 사이의 관계를 빠르게 파악할 수 있습니다.
  • Structure 부분을 읽어 본뒤 Participants(구성 요소) 부분에서 각 클래스의 역할을 제대로 파악합니다.
  • Implementation/Samplecode를 파악하고 구현기법과 주의사항들을 파악합니다.

디자인 패턴의 정의

  • 디자인 패턴은 특정 컨텍스트 내에서 주어진 문제 해결책입니다.
  • 컨텍스트(Context)
    • 패턴이 적용되는 상황을 의미합니다.
    • 단, 반복적으로 일어날 수 있는 상황이어야 합니다.
  • 문제(Problem)
    • 문제란 컨텍스트 내에서 이뤄야 하는 목표를 의미합니다.
  • 해결책(Solution)
    • 제약조건 속에서 누가 적용해도 목표를 이룰수 있는 일반적인 디자인을 의미합니다.

디자인 패턴 분류하기

생성행동구조
싱글톤전략데코레이터
추상 팩토리싱글톤어뎁터
팩토리 메소드옵저버컴포지트
프로토 타입반복자퍼사드
빌더템플릿 메소드프록시
상태플라이웨이트
인터프리터브리지
역할 변경
비지터
중재자
메멘토
  • 회색 표시는 잘 사용하지 않는 패턴들을 의미합니다.
  • 많은 디자인 패턴이 등장하면서 패턴 카탈로그에서는 생성 패턴, 행동 패턴, 구조 패턴 3가지 주제로 디자인 패턴을 분류하기 시작했습니다.
  • 생성 패턴은 객체 인스턴스를 생성하는 패턴으로 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어주는 패턴입니다.
  • 행동 패턴은 클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴입니다.
  • 구조 패턴은 클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 패턴입니다.
  • 생성 패턴, 행동 패턴, 구조 패턴 3가지로 분류하는 방법 외에도 클래스 패턴, 객체 패턴으로 분리하는 방법도 존재합니다.
클래스 패턴객체 패턴
템플릿 메소드전략
팩토리 메소드데코레이터
어댑터옵저버
인터프리터커맨드
반복자
컴포지트
퍼사드
프록시
프로토타입
추상팩토리
싱글톤
브리지
플라이웨이트
책임 연쇄
중재자
빌더
비지터
메멘토
  • 클래스 패턴은 클래스 사이의 관계가 상속으로 어떻게 정의되는지를 다룹니다. 클래스 사이의 관계는 대부분 컴파일할 때 결정 됩니다.
  • 객체 패턴은 객체 사이의 관계를 다룹니다. 객체 사이의 관계는 보통 구성으로 정의됩니다. 일반적으로 실행 중에 관계가 결정되므로 클래스 패턴보다 동적이고 유연합니다.
  • 이외에도 생성, 구조, 행동 3가지로 나눈 다음 분리 패턴을 적용해서 나누는 방식이 한 가지 더 존재하는데 이 글에서는 가장 많이 사용하는 두 가지 방식에 대해서만 정리하겠습니다.

안티 패턴

  • 안티 패턴은 어떤 문제의 나쁜 해결책에 이르는 길을 의미합니다.
  • 안티 패턴의 가장 큰 역할은 개발자들이 구현할 때 안 좋은 방향의 구현을 미리 막아준다는 점에 있습니다.
  • 안티 패턴은 장기적인 관점에서 발생하는 문제에 대해 설명합니다.
  • 안티 패턴도도 일반 디자인 패턴과 마찬가지로 개발 안티 패턴, 객체지향 안티 패턴, 조직 안티 패턴 등 다양한 특정 영역의 안티 패턴이 존재합니다.
  • https://c2.com/ 에서 안좋은 안티 패턴들을 확인할 수 있습니다.
반응형

'디자인 패턴' 카테고리의 다른 글

CHAPTER 12.복합 패턴  (0) 2023.05.06
CHAPTER 11.프록시 패턴  (0) 2023.05.06
CHAPTER 10.상태 패턴  (0) 2023.05.06
CHAPTER 09.반복자 패턴과 컴포지트 패턴  (0) 2023.05.06
CHAPTER 08.템플릿 메소드 패턴  (0) 2023.05.06