책너두 (헤드 퍼스트 디자인 패턴) 47일차 (~635p)

요약

  • 실전 디자인 패턴
    • 패턴을 찾아 떠나기
    • 사악한 안티 패턴 섬별하기
  • 기타 패턴
    • 브리지 패턴
    • 빌더 패턴

메모

패턴을 찾아 떠나기

  • 디자인 패턴의 정석
    • GOF 디자인 패턴
      • 모든 기초 패턴을 찾을 수 있음.
  • 패턴 교과서
    • 패턴이라는 개념은 버클리 건축학과의 크리스토퍼 알렉산더가 처음으로 고안함.
    • 전산학자가 아닌 건축가임.
    • 디자인 패턴이 어떻게 시작되었는지 알 수 있음.
    • 주거용 건축을 만드는 일이 확장성 좋은 소프트웨어를 만드는 것이 서로 얼마나 유사한지 깨달을 수 있음.

사악한 안티 패턴 섬별하기

  • 안티 패턴(Anti-Pattern) : 어떤 문제의 나쁜 해결책에 이르는 길을 알려줌.
  • 안티 패턴은 나쁜 해결책을 문서로 만들어두어 다른 개발자들이 똑같은 실수를 하지 않도록 방지할 수 있음.
  • 안티 패턴의 요소
    • 어떤 이유로 나쁜 해결책에 유혹되는지를 알려줌.
    • 장기적인 관점에서 그 해결책이 나쁜 이유를 알려줌.
    • 좋은 해결책을 만들 때 적용할 수 있는 다른 패턴을 제안해줌.

CHAPTER 14. 다양한 패턴 빠르게 알아보기 : 기타 패턴

브리지 패턴

  • 구현과 더불어 추상화 부분까지 변경해야 한다면 브리지 패턴을 쓰면 됨.
  • 추상화된 부분과 구현 부분을 서로 다른 클래스 계층구조로 분리해서 그 둘을 모두 변경할 수 있음.
    • ex) 리모컨과 TV
  • 장점
    • 구현과 인터페이스를 완전히 결합하지 않았기에 구현과 추상화 부분을 분리할 수 있음.
    • 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있음.
    • 추상화 부분을 구현한 구상 클래스가 바뀌어도 클라이언트에는 영향을 끼치지 않음.
  • 활용법
    • 여러 플랫폼에서 사용해야 하는 그래픽스와 윈도우 처리 시스템에서 유용하게 쓰임
    • 인터페이스와 실제 구현할 부분을 서로 다른 방식으로 변경해야 할 때 유용하게 쓰임
  • 단점
    • 디자인이 복잡해진다는 단점이 있음.

빌더 패턴

  • 제품을 여러 단계로 나눠서 만들도록 제품 생상 단계를 캡슐화하고 싶다면 빌더 패턴을 사용하면 됨.
  • ex) 휴가 계획 프로그램
    • 손님마다 휴가 일수와 하는 일이 다름.
    • 다양한 손님의 계획표를 표현할 수 있는 유연한 자료구조가 필요함.
    • p634 참고
  • 반복자 패턴을 사용하면 반복 작업을 별도의 객체로 캡슐화해서 컬렉션의 내부 구조를 클라이언트로부터 보호할 수 있음.
    • 계획표 작성을 객체에 캡슐화해서 클라이언트가 빌더에게 계획표 구조를 만들어 달라고 요청하도록 만들 수 있음.
  • 장점
    • 복합 객체 생성 과정을 캡슐화함
    • 여러 단계와 다양한 절차를 거쳐 객체를 만들 수 있음. (팩토리 패턴은 한 단계에서 모든 걸 처리함..)
    • 제품의 내부 구조를 클라이언트로부터 보호할 수 있음.
    • 클라이언트는 추상 인터페이스만 볼 수 있기에 제품을 구현한 코드를 쉽게 바꿀 수 있음.
  • 활용법
    • 복합 객체 구조를 구축하는 용도로 많이 쓰임
  • 단점
    • 팩토리를 사용할 때보다 객체를 만들 때 클라이언트에 관해 더 많이 알아야 함.

댓글

Designed by JB FACTORY