독서

[나는 리뷰어다] 헤드퍼스트 디자인패턴

마데카솔라 2022. 4. 23. 23:00
반응형

이번 달은 디자인 패턴 관련 서적 중 인기가 많은 헤드퍼스트의 디자인 패턴을 받아 읽게 되었습니다.

 

부트캠프에서 멘토님께서 다양한 디자인패턴을 적용한 코드를 보여주셨기 때문에 패턴의 중요성에 대해 인지를 하고 있는 상태였고, 관련해서 공부를 하고 싶다는 마음도 있었습니다.

 

코딩 테스트, 자바, DB 등 팀원들이 진행하던 스터디 중 디자인 패턴도 물론 존재했고 이 책으로 진행하여 좋은 후기를 남겼던 것이 기억에 남아 이번 달 도서 목록에 이 도서가 있었다는 것이 굉장히 기뻤습니다.

 

개인적으로 디자인패턴은 객체지향 개념을 토대로 만들어졌기 때문에 자바 개념을 어느 정도 확립하고 공부하면 효율성이 더 좋다고 생각해 현재보다는 이후에 공부할 계획이었습니다.

 

하지만, 좋은 기회로 책을 제공받은 만큼 특정 패턴 몇 개만 집중적으로 읽어보고 후기를 남기기로 하였습니다.

 

헤드퍼스트 디자인패턴

 

 

책의 구성을 먼저 살펴보면 일반 서적과는 서술 방식이 많이 다르기 때문에 어떻게 책을 읽어야 하는지에 대한 방법이 서술되어 있고, 이를 기반으로 총 14개의 챕터(패턴)를 읽을 수 있습니다.

 

헤드퍼스트에 대한 저의 개인적인 경험은 부정적이었습니다. 왜냐하면 대학생 때 자바를 처음 접하던 시절 헤드퍼스트 서적을 택해 공부하였는데 아는게 1도 없던 시절에 그림이 다양하고 톡톡 튀는 느낌의 설명을 받아들이기 어려워 다른 책으로 학습했기 때문입니다.

 

하지만, 오늘 이 책을 읽은 결과 그림을 통한 예제와 대화체를 통한 의문 제기 등이 오히려 저에게 쉽게 다가와 내용을 쉽게 익힐 수 있었습니다.

 

1장은 디자인 패턴 소개와 간단한 예제를 통해 코드에 전략 패턴을 입히는 과정으로 진행되는데 해당 내용에 관해 간략하게 내용을 작성해보겠습니다.

 

 

Chapter 1. 전략 패턴

 

오리가 꽥꽥소리를 내고 헤엄을 치는 등의 관련 행동을 코드로 나타내면서 시작합니다.

 

어느 프로젝트나 그렇듯 먼저 동작하게 구현하는 것이 중요하기 때문에 Duck이라는 슈퍼클래스로 오리와 관련된 모든 코드를 작성합니다.

 

이후에 클래스를 확장해 나가면서 다른 종류의 오리를 만듭니다.

 

간단하게 생각하면 상속을 받아 메서드를 재정의해 사용하면 오리 종류별로 다른 행동을 나타낼 수 있다.

 

물론, 코드를 재사용할 수 있어 좋은 방법이라고 생각할 수 있지만 유지보수를 생각했을 때 많은 코드가 중복되어 좋아 보이지 않는다.

 

이처럼 상속을 사용하면 코드가 중복되고, 모든 오리의 행동을 알기 힘들다는 단점이 있다.

 

그렇다면 상속 이외에 어떤 방법이 있을까? 

 

책에서는 먼저 디자인 원칙 중 첫 번째 원칙인 '애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다'을 추천하고 있습니다.

 

이 방법은 달라지는 부분을 먼저 찾고 캡슐화를 적용해 이외의 코드에 영향을 주지 않도록 하는 방법이기 때문에 시스템의 유연성을 향상할 수 있습니다.

 

위 개념은 모든 디자인 패턴의 기반이라고 알고 있으면 되는 만큼 패턴을 공부할 때 전제를 깔고 진행하시면 좋을 듯합니다.

 

이후에 변화하는 부분을 뽑아내고 두 번째 디자인 원칙인 '구현보다는 인터페이스에 맞춰서 프로그래밍한다'를 적용해보자.

 

나는 행동을 예로 들면 FlyBehavior이라는 인터페이스를 만들고 fly()라는 메서드를 만들어 이 행동을 필요로 할 때 구현체를 만들어 각기 다른 나는 방법을 만들어낼 수 있습니다.

 

이 방법을 사용하면 상속을 사용할 때 생기는 문제를 피하면서 재사용의 장점을 누릴 수 있습니다. 

 

추가로 setter를 사용해 동적으로 필요한 행동을 지정해 동작하도록 만들 수도 있습니다.

 

 

 

간단하게 한 챕터의 예제를 리뷰해보았는데 제 글보다 실제로 책을 본다면 그림을 통한 예제와 직접 대화를 나누는 것처럼 진행되어 훨씬 이해가 잘 될 것입니다.

 

총 14개의 패턴이 서술되어 있는 만큼 한 번 쭉 읽어본 후에 실제 패턴을 적용할 일이 있다면 해당 패턴을 집중적으로 다시 공부한다면 충분히 패턴에 중독될 수 있을 것이라고 생각합니다.

 

저도 객체지향에 대해 다시 공부하고 있는 입장이라 현재는 얕게 이해하고 넘어가지만 추후에 다시 읽어본다면 저에게 많은 도움이 될 것이라고 느꼈습니다.

 

600쪽이 넘는 방대한 양인만큼 혼자서 공부하면 지루할 수 있으니 스터디를 만들어 같이 공부하는 것도 좋은 방법이겠네요ㅎㅎ

 

쉽고 머리에 쏙쏙 박히는 디자인 패턴 서적을 원하신다면 강추합니다!!

 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형