GoF의 디자인 패턴 1장 - 2장

2019-07-08

디자인 패턴 입문은 헤드퍼스트 디자인패턴 책으로 했었다. 디패를 아예 처음 접하는 것도 아니었기에, 그냥 GoF가 디패의 바이블이라는 말을 듣고 별 생각없이 이걸 보는게 좋다고 생각했다.

이 책을 구입하려는 사람들은 이 책이 94년도에 첫 출간 되었으며 c++과 스몰토크로 쓰여져 있다는 것을 확인하고, 1장 서론을 한번 읽어본 뒤 구매를 했으면 좋겠다.

이 책의 원서가 어떤지는 모르겠지만 번역 상태가 썩 좋은편은 아니라고 생각한다. 사람마다 선호하는 문체가 다르긴 하지만, 솔직히 이것보다 더 읽기 쉽고 설명이 잘 되어있는 한국어로 쓰여진 디패책들이 있다. 헤드퍼스트도 꽤 옛날 책이긴 하지만 GoF책보다는 쉽게 읽힌다. 자바 기초 문법이 익숙하면 무리없이 읽을 수 있을 정도니까.

전에 봤던 클린코드 책을 읽으면서도 ‘자바 개발자가 아닌 사람이 이 책을 읽으면 힘들겠다’라는 생각을 했었다. 그 감정을 이 책을 보면서 느끼고 있다. 씨쁠도 스몰토크도 쓰지않는데 읽기 버거운 문체와 와닿지 않는 예제까지 흠…

나는 책을 볼 때 꽤 꼼꼼하게 보는 편이라고 생각하는데, 이 책은 그렇게 보는것을 포기했다. 디패의 바이블이라고 하니까 끝까지 읽기는 할 것인데, 이 책에 있는 문장과 코드 하나하나 꼼꼼하게 볼 자신은 없다.

이 책 역시 학교 동아리 스터디 용으로 읽는 책이며, 주마다 패턴 3개 정도 볼 것 같으니까 2-3달 정도 걸릴 것 같다.

1장 서론 - 2장 사례 연구: 문서 편집기 설계

1장과 2장이 말하는 내용은 앞으로 설명할 패턴들은 총 23가지가 있는데, 패턴이 왜 필요한지 간단히 소개하자면 이렇다~ 이므로 그냥 완전히 안받아들여져도 넘겼다. 최근에 본 책중에서 서론에서 진을 엄청 뺀 책은 오랜만이었다.

2장에는 총 8가지의 패턴이 어떤 상황에서 쓰여지는지 쭉 설명되어있다. 다른 분들은 어떤지 모르겠는데, 애매한 번역은 둘째치고 나는 2장 읽는것 자체가 힘들었다. 그냥 ‘음..어..그래..어어..’ 하고 쭉쭉 넘겼다.

  1. Composite Pattern
    단일객체와 복합객체를 구분없이 다루게 해줌
  2. Strategy Pattern
    행동(알고리즘)을 캡슐화 해서 런타임에 객체의 행동을 변경할 수 있음
  3. Decorator Pattern
    객체 결합으로 기능 확장과 조합을 설계하기에 용이
  4. Abstract Factory Pattern
    유사한 객체들의 생성 방식을 일관화 해놓음
  5. Bridge Pattern
    추상과 구현을 분리
  6. Command Pattern
    명령이 발동되는 것과 그것을 수행하는 것을 분리
  7. Iterator Pattern
    반복되는 행동을 추상화 함. 순회 목적으로 자주쓰는 iterator가 대표 예
  8. Visitor Pattern
    데이터 구조와 연산을 분리. 구조 변경 없이 연산 추가가 용이함