13장 : 실전 디자인 패턴

객체마을 공식 가이드

  • 널리 퍼져 있는 “디자인 패턴”의 정의에 대한 오해에 대해서 확실히 파악하고 넘어가자.

  • 디자인 패턴 카탈로그에 대해 알아보고, 그런 카탈로그의 필요성을 제대로 파악하자.

  • 적절한 시기에 디자인 패턴을 사용하도록 하자.

  • 패턴을 제 범주에 맞게 사용하도록 하자.

  • 패턴을 발견하는 것은 고수들만이 할 수 있는 일은 아니다.

  • 대세를 따르자.

  • 도사님으로부터 정신 수양법을 배우자.

  • 패턴과 관련된 다양한 용어를 많이 익혀서 친구들 및 다른 개발자들에세 깊은 인상을 심어주자.

디자인 패턴

  • 패턴이란 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다.

복습

  • 데코레이터 패턴

    • 객체를 감싸서 새로운 행동을 제공한다.

  • 스테이트 패턴

    • 상태를 기반으로 한 행동을 캡슐화하고 위임을 통해서 어떤 행동을 사용할지 결정한다.

  • 이터레이터 패턴

    • 컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리할 수 있게 해 준다.

  • 퍼사드 패턴

    • 일련의 클래스에 대해서 간단한 인터페이스를 제공한다.

  • 스트래티지 패턴

    • 교환 가능한 행동을 캡슐화하고 위임을 통해서 어떤 행동을 사용할지 결정한다.

  • 프록시 패턴

    • 객체를 감싸서 그 객체에 재한 접근을 제어한다.

  • 팩토리 메소드 패턴

    • 생성할 구상 클래스를 서브클래스에서 결정한다.

  • 어댑터 패턴

    • 객체를 감싸서 다른 인터페이스를 제공한다.

  • 옵저버 패턴

    • 상태가 변경되면 다른 객체들한테 연락을 돌릴 수 있게 해준다.

  • 템플릿 메소드 패턴

    • 알고리즘의 개별 단계를 구현하는 방법을 서브클래스에서 결정한다.

  • 컴포지트 패턴

    • 클라이언트에서 객체 컬렉션과 개별 객체를 똑같이 다룰 수 있도록 해준다.

  • 싱글턴 패턴

    • 딱 한 객체만 생성되도록 한다.

  • 추상 팩토리 패턴

    • 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 해준다.

  • 커맨드 패턴

    • 요청을 객체로 감싼다.

안티 패턴

  • 어떤 문제에 대한 나쁜 해결책에 이르는 길을 알려준다.

분류

  • **생성 관련 패턴(creational pattern)**은 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할 객체 인스턴스 사이의 연결을 끊어주는 패턴이다.

    • 싱글턴

    • 빌터

    • 프로토타입

    • 추상 팩토리

    • 팩토리 메소드

  • **행동 관련 패턴(Behavioral Pattern)**은 클래스와 객체들이 상호작용하는 방법 및 역할을 분담하는 방법과 관련된 패턴이다.

    • 템플릿 메소드

    • 인터프리터

    • 역할 변경

    • 스트래티지

    • 커맨드

    • 비지터

    • 미디에이터

    • 이터레이터

    • 메멘토

    • 옵저버

    • 스테이트

  • **구조 관련 패턴(Structural pattern)**은 클래스 및 객체들을 구성을 통해서 더 큰 구조로 만들 수 있게 해 주는 것과 관련된 패턴이다.

    • 데코레이터

    • 플라이웨이트

    • 컴포지트

    • 어댑터

    • 프록시

    • 퍼사드

    • 브리지

핵심 정리

  • 디자인 패턴이 자연스럽게 나올 수 있도록 하자. 패턴은 억지로 적용하면 안 된다.

  • 디자인 패턴은 돌에 새겨진 글씨가 아니다. 필요에 따라 적당히 변형시켜서 사용하자.

  • 주어진 조건을 만족시키는 가장 간단한 해결책을 사용하자. 디자인 패턴을 꼭 써야 하는 것은 아니다.

  • 디자인 패턴 카탈로그를 읽어보고 패턴을 숙지하자. 패턴들 사이의 관계에 대해서도 확실히 이해해야 하낟.

  • 패턴을 분류하여 패턴 그룹을 만들 수 있다. 그룹으로 나누는 것이 도움이 된다면 적극적으로 활용하자.

  • 패턴 작가가 되려면 대단한 노력이 필요하다. 끈기 있게 오랜 시간에 걸쳐 끊임 없이 다듬다.

  • 우리가 접할 패턴은 대부분 새로운 패턴이 아니고 기존 패턴을 응용한 것이다.

  • 주변 사람들과 전문 용어를 공유하자. 공통의 언어로 얘기할 수 있다는 것은 패턴의 가장 큰 장점 가운데 중 하나다.

Last updated