관심사/도서

head first design patterns(객체지향 디자인 패턴) 서적(책)

콘파냐 2014. 4. 22. 04:37

이 책은 자바를 중심으로 쓰여져 있다. 디자인 패턴이라 해서 읽기 시작했지만, C++로 공부하는 데 큰 불편함은 없는 듯 하다. 먼저 디자인 패턴에 대해 무지한 난 이 책의 내용이 매우 흥미로웠다. 지금까지 남이 짜 놓은 소스들을 많이 봐왔고 부분적으로 패턴을 이해하는 식이었다. 이 책을 보면서 그 동안 내가 큰 그림을 보지 못 했던 걸 깨달았다.  읽어 가면서, 어디서 봤던 코드가 이런 패턴을 활용했구나 하는 뒤늦은 깨달음이랄까? 어쨌거나 이 책은 출판된지 오래된 책이지만 읽을만한 가치가 충분히 있는 책이다.



이 책의 내용.

'GoF 패턴 중에서 몇가지 중요한 핵심 패턴'을 중심으로 다룬다고 서론에 쓰여져 있다. 이 책의 목표는 기존의 핵심패턴을 배움으로서 새로운 패턴에 쉽게 익숙해지게 하는 것이 목표다. 패턴에 관한 기본서라고 보면 된다.



이 책의 예상 독자.

C++또는 자바 문법 또는 다른 객체 지향 언어에 어느 정도 익숙한 분?.


이 책을 읽으면서 얻은 것.

객체 지향이라는 개념은 단지 원석에 불과하다는 것을 확실히 알게 되었다. 이런 객체 지향 개념을 제대로 사용하기 위해서는 이 책에 나오는 여러가지 패턴을 익혀주는 것이 좋다. 이 책에서 소개하는 패턴 말고도 누구나 새로운 패턴을 창조할 수 있지만, 이렇게 검증을 거쳐온 패턴들은 그만큼 많이 사용되기 때문이다. 그리고 다른 사람이 설계한 패턴을 분석하기 위해서 기본적인 패턴에 대한 이해는 필수라 생각된다.

이 책은 자바(java) 언어로 설명되어 있다. 그리고 난 C++로 직접 코딩하면서 이 책을 읽어간다.(아직 보고 있는 중이다.) C++과 자바는 비슷한 객체지향 언어지만, 확실히 객체 지향이라는 목표를 중심으로 공부하기에는 자바언어가 편하다. implements나 interface 같은 키워드가 있기 때문에, C++과 달리 명확하고 가독성이 좋고 어느 정도 객체 지향적 설계를 하게 된다. 반면에 C++의 자유도는 이런 객체지향 디자인 패턴에 방해가 되는듯 보인다. 그래서 C++을 주력 무기로 한다면 자바 언어의 소스를 흉내 내는 것도 꽤 괜찮은 공부 같다는 생각이 든다. 덤으로 자바언어도 공부가 되는 듯하다.


단점

7백 페이지 정도 되는 분량이다. 장점일 수도 있고 단점일 수도 있는 부분인데, 그림과 삽화 등, 실제로 이야기하는 듯 쓰여진 책이다. 많은 정성이 들어간 책이라 생각 되지만, 산만하다.반복도 많고, 시행 착오 과정도 세세히 설명해서 지루해질 수도 있다. 또 인터페이스를 구현한 클래스를 구상 클래스라고 하는데, 이 부분 번역이 왠지 나로서는 어색하게 느껴진다. 그냥 구체 클래스라고 하는 것이 의미 전달에 있어서 좋지 않을까.. 뭐 둘다 어색하긴 마찬가지지만.


장점

완전히 이해하지 못해도 이야기의 흐름이 있기 때문에 머리에 어떤 구조가 잡히는 듯 하다. 이런 이유로 처음으로 디자인 패턴을 접한다면 이 책을 추천한다. 한번 소설책 처럼 읽고 나면, 앞으로 패턴 공부가 한층 수월해질 수 있다 생각 든다. 중간 중간에 핵심이 되는 원칙도 정리해 준다.



아직 다 읽지는 않았지만, 이 책은 실제 개발자가 개발을 하는 과정의 예를 들어서 이야기를 해나간다. 배우는 입장에선 이런 실제 같은 이야기들이 동기부여가 된다.  다음은 책에서 발췌한 문장이다. '패턴을 알게 되고 패턴을 중심으로 개발자간에 대화를 해나가면, 패턴 사용자 커뮤니티가 만들어졌다고 보면 된다' 이렇게 패턴에 이름을 붙히고 패턴을 공부하는 이유는 패턴 이름만으로 많은 것들을 함축하여 이야기 할 수 있기 때문에, 효율적인 개발을 할 수 있게 된다. 이 부분도 패턴을 공부하는 동기부여가 될 수 있다.

간만에 괜찮은 책을 읽는 듯 하다. 이 책을 읽어가면서 다양한 패턴들을 C++로 정리를 해야겠다.

반응형