메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

쉽게 배워 바로 써먹는 디자인 패턴

24가지 패턴으로 알아보는 객체지향의 원리

한빛미디어

집필서

판매중

  • 저자 : 이호진
  • 출간 : 2020-10-05
  • 페이지 : 540 쪽
  • ISBN : 9791162243404
  • 물류코드 :10340
  • 초급 초중급 중급 중고급 고급
4.1점 (23명)
좋아요 : 9

객체지향 프로그래밍 설계 원칙, 패턴을 알면 개발이 보인다

 

디자인 패턴은 어느 날 갑자기 생겨난 방식이 아니다. 객체지향 개발 과정에서 겪는 다양한 이슈를 종합해보면 서로 비슷한 유형의 문제다. 개발자들은 서로 자신의 경험을 바탕으로 문제를 해결해나갔다. GoF는 객체지향 설계 시 발생하는 문제점을 목록화하여 24가지 패턴으로 정리한다.

 

이 책은 디자인 패턴의 개념과 동작 원리를 설명한다. 각 장을 24가지 패턴으로 구성하였으며 누구나 이해할 수 있는 쉬운 예제와 눈높이를 낮춘 설명은 디자인 패턴을 배우고 학습하는 데 유용하다. 객체지향을 이해하고 프레임워크를 학습하려는 개발자에게 유익한 가이드가 될 것이다.

 

 

이 책에서 다루는 내용

  • 쉬운 예제로 설명하는 24가지 디자인 패턴
  • 유지보수를 고려한 설계 방법론
  • 최고의 성능을 위한 개발 방법론

 

 

출판사 리뷰

 

객체지향 개념

이 책은 객체지향 디자인 패턴 카탈로그를 다룬다. 객체지향 개념과 설계 방법을 이해한다면 디자인 패턴을 학습하기가 훨씬 수월하다. 학습에 필요한 디자인 패턴의 기초 개념과 원리를 같이 설명한다.

 

디자인 패턴 카탈로그

패턴 카탈로그에서 꼭 필요한 부분을 선별해 우선적으로 학습할 수 있도록 구성했다. 패턴 각각의 독립적인 특성에 맞게 집필했으며, 패턴들을 쉽게 이해할 수 있도록 주요 내용을 반복 설명한다. 하지만 동일한 객체지향 개념이라도 패턴에서 의도하는 방법에 따라 다른 시각으로 바라볼 수 있으므로 찬찬히 읽어보기를 권한다.

 

학습 목적

특정 언어에 종속되지 않고 디자인 패턴의 개념과 동작 원리 위주로 학습할 수 있도록 구성했다. 디자인 패턴을 처음 접하는 독자도 쉽게 이해할 수 있도록 간단한 코드와 그림으로 설명한다. 객체지향 설명은 일반적인 도형을 이용해 더욱더 쉽게 이해할 수 있게 구성했다.

이호진 저자

이호진

전기전자를 전공하고 주로 마이크로프로세서, 하드웨어 설계, 펌웨어, 로봇 개발 등과 관련된 일을 했다. 또한 산업용 레이저 프린터, ARM, 언어 분석, 알고리즘 개발을 했다. 외국계 기업에서 리눅스 운영체제, 백업 및 서버 가상화 등 다양한 비즈니스 경험을 거쳐 최근에는 웹 및 모바일과 관련된 개발 활동을 하고 있다. 현재는 경험과 지식을 후배들에게 전달하기 위해 관련 내용을 정리하며 집필 활동에 전념하고 있다.

CHAPTER 0 디자인 패턴 

0.1 패턴

0.2 소프트웨어 공학

0.3 설계 원칙

0.4 GoF

0.5 패턴의 요소

0.6 유지 보수

0.7 정리

 

[PART 1 생성 패턴 - 추상화를 통해 객체 생성하기]


CHAPTER 1 팩토리 패턴 

1.1 클래스와 객체지향

1.2 의존성

1.3 의존성 주입

1.4 의존 관계의 문제점

1.5 팩토리 패턴

1.6 단순 팩토리

1.7 장점과 단점

1.8 관련 패턴

1.9 정리

 

CHAPTER 2 싱글턴 패턴 

2.1 객체 생성

2.2 유일한 객체

2.3 싱글턴

2.4 싱글턴 설계

2.5 인스턴스 생성

2.6 정적 클래스

2.7 싱글턴 확장

2.8 자원 처리

2.9 관련 패턴

2.10 정리

 

CHAPTER 3 팩토리 메서드 패턴 

3.1 추상화

3.2 패턴 확장

3.3 상위 클래스

3.4 하위 클래스

3.5 매개변수

3.6 관련 패턴

3.7 정리

 

CHAPTER 4 추상 팩토리 패턴 

4.1 팩토리 메서드

4.2 그룹

4.3 팩토리 그룹

4.4 공장 추가

4.5 부품 추가 실습

4.6 패턴 결합

4.7 장점과 단점

4.8 관련 패턴

4.9 정리

 

CHAPTER 5 빌더 패턴 

5.1 건축물

5.2 객체 실습

5.3 빌더

5.4 알고리즘

5.5 생성 요청

5.6 관련 패턴

5.7 정리

 

CHAPTER 6 프로토타입 패턴 

6.1 생성

6.2 복사

6.3 프로토타입 패턴

6.4 특징

6.5 관련 패턴

6.6 정리

 

[PART 2 구조 패턴 - 상속과 합성을 사용해 객체 확장하기]


CHAPTER 7 어댑터 패턴 

7.1 오래된 코드

7.2 잘못된 코드

7.3 어댑터

7.4 클래스 어댑터

7.5 객체 어댑터

7.6 설계

7.7 관련 패턴

7.8 정리

 

CHAPTER 8 브리지 패턴 

8.1 복잡한 코드

8.2 상속

8.3 패턴 설계 1

8.4 패턴 설계 2

8.5 장점과 단점

8.6 관련 패턴

8.7 정리

 

CHAPTER 9 복합체 패턴 

9.1 객체를 포함하는 객체

9.2 복합체의 구조적 특징

9.3 투명성을 활용한 동일한 설계

9.4 추상화를 통한 일반화 작업

9.5 Leaf

9.6 Composite

9.7 패턴 결합

9.8 적용 사례 1

9.9 적용 사례 2

9.10 적용 사례 3

9.11 장단점 및 결과

9.12 관련 패턴

9.13 정리

 

CHAPTER 10 장식자 패턴 

10.1 기능 추가

10.2 조건 추가

10.3 확장

10.4 객체에 추가 장식하기

10.5 기본 실습

10.6 장단점 및 결과

10.7 관련 패턴

10.8 정리

 

CHAPTER 11 파사드 패턴 

11.1 협업을 위한 분리 작업

11.2 파사드 패턴을 응용한 API

11.3 파사드를 이용한 단순화

11.4 최소 지식 원칙

11.5 기본 실습

11.6 파사드 패턴의 효과

11.7 관련 패턴

11.8 정리

 

CHAPTER 12 플라이웨이트 패턴 

12.1 메모리 자원

12.2 자원 공유

12.3 상태 구분

12.4 패턴 실습

12.5 관련 패턴

12.6 정리

 

CHAPTER 13 프록시 패턴 

13.1 객체를 대행하는 프록시

13.2 객체 가로채기

13.3 객체 분리

13.4 프록시 생성

13.5 행위를 처리하는 핸들러

13.6 동적 프록시

13.7 원격 프록시

13.8 가상 프록시

13.9 보호용 프록시

13.10 스마트 참조자

13.11 정리

 

[PART 3 행동 패턴 - 복합 구조로 객체의 책임 분산하기]


CHAPTER 14 반복자 패턴 

14.1 객체의 집합

14.2 배열

14.3 집합체

14.4 반복자

14.5 작업 분할

14.6 관련 패턴

14.7 정리

 

CHAPTER 15 명령 패턴 

15.1 명령 처리

15.2 명령 패턴의 구성과 특징

15.3 인터페이스

15.4 명령

15.5 리시버

15.6 인보커

15.7 클라이언트

15.8 undo

15.9 장단점

15.10 관련 패턴

15.11 정리

 

CHAPTER 16 방문자 패턴 

16.1 데이터 처리

16.2 분리

16.3 원소 객체

16.4 방문자

16.5 반복자

16.6 관련 패턴

16.7 정리

 

CHAPTER 17 체인 패턴 

17.1 제어문

17.2 동작조건

17.3 행동 분리

17.4 사슬 연결

17.5 체인 패턴

17.6 미들웨어

17.7 관련 패턴

17.8 정리

 

CHAPTER 18 감시자 패턴 

18.1 감시자

18.2 구성

18.3 관계

18.4 주체

18.5 감시자

18.6 동작 실습

18.7 활용

18.8 관련 패턴

18.9 정리

 

CHAPTER 19 중재자 패턴 

19.1 중재

19.2 중재자

19.3 동료 객체

19.4 기본 실습

19.5 관련 패턴

19.6 정리

 

CHAPTER 20 상태 패턴 

20.1 상태란

20.2 상태 처리

20.3 패턴 구현

20.4 객체 생성

20.5 상태 전환

20.6 실습

20.7 효과

20.8 패턴 유사성

20.9 적용 사례

20.10 정리

 

CHAPTER 21 메멘토 패턴 

21.1 상태 저장

21.2 캡슐화

21.3 메멘토

21.4 Originator 클래스

21.5 CareTaker 클래스

21.6 관련 패턴

21.7 정리

 

CHAPTER 22 템플릿 메서드 패턴 

22.1 프로그램의 구조

22.2 템플릿

22.3 일반화

22.4 추상화

22.5 템플릿 메서드

22.6 의존성 디자인

22.7 관련 패턴

22.8 정리

 

CHAPTER 23 전략 패턴 

23.1 문제

23.2 알고리즘

23.3 분리

23.4 인터페이스

23.5 전략

23.6 전략 실행

23.7 적용 사례

23.8 관련 패턴

23.9 정리

 

CHAPTER 24 인터프리터 패턴 

24.1 언어

24.2 언어 설계

24.3 처리계

24.4 중간 코드

24.5 해석

24.6 클래스 표현

24.7 관련 패턴

24.8 정리

오프라인, 온라인 서점에서 IT 관련 도서를 조금만 훑어봐도 객체지향, 디자인패턴에 관한 무수히 많은 책들이 있습니다. 가장 유명한 GoF의 책부터 시작하여, OOP의 개념과 디자인패턴을 특정언어로 다루는 도서들이 많습니다. 

 

결론부터 말하자면, 개인적으로 이 책을 읽은 후 서점에 있는 수 많은 책들 중 강하게 누군가에 추천할만한 책이라고 생각하진 않습니다. (개인적인 의견입니다.)

 

많은 책들이 Java, C++, C# 등의 언어로 씌어져 있으나 이 책은 특이하게 PHP로 예제가 작성되어 있습니다. 그 점은 눈에 띄게 특이하지만 디자인패턴은 특정 언어에 종속되는 기법이 아니기에 이 책의 큰 메리트라고 보이진 않습니다. 

 

구성이 좋다?, 내용이 좋다? 라고 말하기에는 조금 주저하게 됩니다. 다른 출판된 많은 책들도 유사한 책들이 많기에 그 책들과 비교했을 때도 큰 장점이 뭘까 싶습니다.

 

또한 가장 힘들었던것은 오탈자 입니다. 개인의 성향이기도 하지만 오탈자를 대수롭지 않게 넘어가는 분들도 있겠지만 개인적으로 저는 오탈자로 인해 책에 집중도가 많이 떨어지게 되었습니다. 

 

솔직히 추천하고 싶지는 않습니다. 

 

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

 

이 책은 상당히 친절한 편이다.

각 패턴 케이스마다 이미지로 이 패턴의 형태를 이해할 수 있도록 해주며 어디서 파생되었고, 관련 패턴들이 어떤 것들이 있는지 알려준다.

예전에 학생때 디자인패턴을 공부하면서 느꼈던 어려운점은 "다 비슷비슷해 보이는데 왜 나눈거지?"였었다.

각 패턴이 왜 생기게 되었고 관련된 패턴을 도식 및 예시들로 보니 한결 이해가 쉬웠다.

 

책은 기본에도 충실한 편이다.

패턴 내용 뿐만 아니라 개발에 있어 주의해야할 점들도 함께 알려주고 있다. 대부분의 책은 이러한 내용을 가볍게 넘어가는 편인데 기본에 충실한 편이라 문장을 꼼꼼히 읽어보는 독자라면 한결 내용을 이해하기 쉬워보인다.

프로그래밍을 공부하는 사람들은 디자인 패턴이란 말을 많이 들어보셨을 겁니다.

한빛미디어에서 디자인 패턴 도서가 나왔습니다. php로 설명이 되어 있습니다. 프로그래밍 언어가 php라 헷갈리거나 어려운 부분은 없습니다.

초보자가 공부하기에 어려움이 없습니다. 그림과 예시등이 풍부하게 들어가 있습니다.

간혹 오타등이 있는 부분이 아쉬움으로 남습니다.

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

KakaoTalk_20210922_223242137.jpg

 

KakaoTalk_20210922_223242137_01.jpg

 

 

오늘은 프로그래밍과 관련된 디자인 패턴에 대해 알아보고자 합니다

디자인 패턴
쉽게 배로 바로 써먹는 디자인패턴

한빛미디어에서 2020년 10월 출판한 책(클릭)이며, 24가지 패턴으로 객체 지향의 원리를 스터디한 책입니다.

[1] 저자 소개

전기전자를 전공하고 주로 마이크로프로세서, 하드웨어 설계, 펌웨어, 로봇 개발 등과 관련된 일을 했다. 또한 산업용 레이저 프린터, ARM, 언어 분석, 알고리즘 개발을 했다. 외국계 기업에서 리눅스 운영체제, 백업 및 서버 가상화 등 다양한 비즈니스 경험을 거쳐 최근에는 웹 및 모바일과 관련된 개발 활동을 하고 있다. 현재는 경험과 지식을 후배들에게 전달하기 위해 관련 내용을 정리하며 집필 활동에 전념하고 있다.

[2] 목 차

디자인 패턴
디자인패턴 목차 01
디자인 패턴
디자인패턴 목차 02
디자인 패턴
디자인패턴 목차 03
디자인 패턴
디자인패턴 목차 04
디자인 패턴
디자인패턴 목차 05
디자인 패턴
디자인패턴 목차 06

[3] 추천하는 장점!

[3-1] 초보자를 위한 착한 설명

디자인 패턴

프로그래밍 책인데 Factory 발음기호가 적혀 있는 걸 보고 저는 신기했지만, 누군가는 모를 수 있으니 기재할 만큼 세심한 저자라고 생각됩니다.

프로그래밍 용어는 전반적으로 영어로 되어 있기 때문에 사실 한국어로 공부하는 것보다 영어로 공부하는 것을 추천하는 분이 많습니다 (저도 프로그램들은 다 영어로 배우는 게 좋다고 생각합니다. 예를 들어 AutoCAD 같은 프로그램도 메뉴가 한국어로 번역된 버젼도 있는데, 가급적 영문 버전을 쓰는 걸 추천합니다)

그래서 객체지향 프로그래밍이 뭔지 영어로 기재되어 있고, 주석이 각각 달려있는 게 초보자가 스터디하기에 좋은 부분입니다

[3-2] 이미지화 설명

디자인 패턴

대부분의 프로그래밍 책은, 텍스트로 줄줄줄 써놓는 경우가 많습니다. 그래서 읽다보면 지루해지기 마련인데, 확실히 디자인 패턴이라는 제목답게 디자인 적으로 표현한 부분이 많습니다.

저는 구조화가 굉장히 중요하다고 생각해서, 어느 책을 사든 내용을 구조화한 부분이 있는가를 꼭 체크하는데 이 책이 해당되어서 이 부분은 적극 추천하는 부분입니다.

텍스트로 외우기보다, 이렇게 구조화된 부분으로 외우고 내용을 정리하는 게 좋은 것 같습니다.

[3-3] 입력과 결과 출력 화면

디자인 패턴

이 부분은 타 도서와 마찬가지로, 입력과 그 출력에 대한 화면을 옮겨놓은 것으로 연습에 필수적인 부분이라서 추천하는 부분입니다.

디자인 패턴이 24개이다 보니, 각각의 특성에 따라 입력 방식을 주의해야 하는 부분이 많아서 디자인 패턴별로 어떻게 입력해서 유도하는 결과값을 뽑아낼 지 생각을 많이 해야 하는 것 같습니다

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

unnamed2.jpg

 

많은 웹프로그래머 쪽을 지향하는 사람들이 객체지향쪽을 배우는 중에

 

강사분들과 학습 조력자들에게 디자인 패턴을 공부하면 좋다고 들었을것입니다.

 

저 또한 여러번 들었던 기억이 있습니다.

 

그러나 이거를 어떻게 무슨 방식을 적용하느냐가 쉬운 일이 아닌데 크게 생구행(생성, 구조, 행위) 3가지 그리고 그 안에 나눠지는 24가지 패턴으로 하여금 어떤식으로 하면 좋은지를 알려주고 있습니다.

 

다만 언어가 많이들 배우는 자바가 아니라 php라는 것인데 php라서 전혀 이해를 못하거나 그런 부분은 없습니다.

 

그리고 개정된 정보처리기사에서 디자인패턴 부분도 매번 나오고 있는 가운데 하나하나 억지로 외우려는 것보다 이 책을 읽으며 하나하나 이해해가는게 더욱 기억에도 남을거 같습니다.

 

그림을 참조하며 설명해주는 부분도 참 마음에 들었습니다. 다만 다른 여러 독자들이 느낀것처럼 오타와 장황한 설명은 아쉬웠습니다.

 

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

"24가지 패턴으로 알아보는 객체지향의 원리" 라는 부제에 알맞게 각가의 패턴을 설명하며서 객체지향에서의 어떤 원칙과 목적을 위해서 사용하는지에 대하여 설명이 상세히 잘되어 있습니다.

 

개인적으로 단점이라면 설명이 길거나 너무 앞선 내용에 대한 이해를 구할 때가 있어 쉽게 읽기에는 친절하지는 않다고 느낄 수 있다는 점이 단점이라면 단점입니다.

그동안 설명이 너무 쉬운 것을 본것인지, 아니면 이해력에 점점 떨어지고 있는지.. 스스로를 한번 돌아보게 하는 책이었습니다.

번역서인가 하고 저자확인을 했을때 지은이가 대학교수라는 타이틀을 보는 순간

무릎을 탁~! 하고 칠 수 밖에 없었습니다.

이게 무슨 느낌인가 하였더니, 학교때 교재를 보는 느낌과 동일한 것이었습니다.

내부 코드가 흔치 않게 PHP 코드로 구성되어 있어서 생소하지만 그렇다고 못볼 것은 아니죠, PHP를 몰라도 pseudocode 를 읽는 느낌으로 본다면 이해에 문제는 없습니다.

각각 패턴마다 예제 코드와 상세한 설명으로 하나씩 구현을 해볼 수도 있습니다.

다른 언어에 익숙하다면 해당 언어로 구현해본다면 직접 구현하는 느낌도 받을 수 있습니다.

책 본문만으로 약 510 페이지에 달하는 내용이 꽉찬 책입니다.

아는 것 없이 부분만 발췌하여 볼 때에는 카오스를 만날 수 있으므로 차근차근 읽어 보는 것을 추천 드립니다.

* 구성: 4/5 (요약이 하나쯤 있으면 좋겠다고 생각했습니다.)

* 내용: 4/5 (설명이 너무 길거나 짧다는 느낌을 받았습니다.)

* 분량: 많음

* 난이도: 중

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

 

우선 이 책은 프로그램을 전공하고 있는 학생이나 초중급 개발자가 보면 좋을 책이라고 생각되어 진다.

 

이 책의 설명에 사용되어 지는 언어는 php를 사용하고 있지만 반드시 php를 알 필요는 없다고 생각되어 지며 

하나 정도의 언어를 익힌 독자라면 이해하는데 많은 어려움이 필요하지는 않을 듯 하며

많은 디자인 패턴을 차근 차근 설명하려고 노력하였다는 것은 잘 느껴진다.

 

한 가지 아쉬운 것은 책의 구성이다. 

 

많은 디자인 패턴을 설명하기 위해 바로 디자인 패턴에 대한 내용을 기술하고 있는데 중간 중간 초급 개발자들에게 필요한 내용들이 포함 되어 있다.

차라리 앞에서 프로그램에 대한 기본적인 설명을 추가했으면 어땠을까 하는 아쉬움이 있다. 

즉 이 책에서 사용하고 있는 php에 대해서 뒤의 디자인 패턴의 이해를 돋기 위한 기본적인 설명이 미리 포함되었으면 좋았을듯 하다.

 

어쨌든 이 책은 현재 프로그램을 배우고 있는 학생이나 초중급 개발자가 읽어 보면 좋을 듯하다.

하지만 책의 제목 처럼 바로 써먹기 보다는(?) 다양한 디자인 패턴을 이해 한다는 생각으로 접근 하는 읽어 봤으면 한다.

KakaoTalk_20210920_225623420.jpg

 

사실 디자인패턴은 공부할 필요가 없는 영역이긴 하다. 알아두면 좋다 이정도?!. 이유는 간단하다. 프로그래밍을 하다보면 문제해결에 꼭 필요한 구조를 짜야할 때가 있는데, 완성시켜보면 어느 패턴 중 하나라는 걸 알게된다.

즉, 나도 모르게 자연스럽게 디자인패턴 중 일부를 사용하고 있다는 것이다.

이 때쯤 되면, '아, 이게 그런 패턴이라고 하는구나' 라고 깨닫는다. 가벼운 예시로, '음식점에서도 선입선출(先入先出)이 있듯이 먼저 들어온 데이터가 먼저 처리되게끔 코딩해야겠군. 엥? 이걸 큐(queue)라고 부른다고?! 당연한거에 굳이 이름을...' 이런 느낌이랄까...

그렇다면 이 책은 필요없는 책인가?! 그렇지 않다. 책에서 말하는 24가지 패턴 중 일부만이라도 알고 있다면 코딩할 때의 시간 단축이 많이 된다. 해야할 일이 많은 업계 특성상 빠르게 습득할 수 있으면 좋다. 따라서 책 제목처럼 쉽게 배워 바로 써먹는 디자인 패턴 지식이 필요하다.

 

이런 책들의 가장 아쉬운 점은 비주류 언어로 집필한다는 점이다. 항상 말머리에 특정 언어에 종속되지 않고 쉽게 쓸 수 있게끔 구성했다고 하지만 글쎄.... 이 책은 php를 썼다고 한다. 뻔하다. 저자가 가장 자주 쓰고 애용하는 언어이기 때문이다. 사실 저자말대로 디자인 패턴을 공부하는데 특정 언어를 써야할 필요는 없지만 아쉬울 뿐이다. 그래도 파이썬을 선택 안한게 어디인가...

 

책의 장점이라고 한다면 디자인 구성과 함께 패턴이 어떻게 구성되었는지 알려준다. 각 패턴별로 장단점을 설명해주기 때문에 이 부분만 보더라도 이해하긴 쉽다. 다만 이런 것들은 대부분의 디자인패턴 책에서도 다루고 있는 부분이다. 이 책은 php로 다루었다는 점을 제외하고는 특별한 점이 보이지 않았다. 최신 집필인데도 내용은 구시대적 느낌이다.

 

디자인 패턴은 아니지만 엔티티 컴포넌트 시스템(ECS, Entity Componenet System)이라던가 데이터 오리엔트 디자인(DOD, Data Oriented Design)을 다루었으면 하는 바램이 있다. 물론 아키텍처 패턴이기 때문에 이런 책에서는 다룰 일이 없다.

 

php를 주로 다루는 직장이라면 이 책은 도움이 될 것이다. 또한 디자인 패턴에 대해 가볍게 알고 싶은 사람들에게도 좋지만 크게 추천하지는 않는다. 차라리 'Head First Design Patterns: 스토리가 있는 패턴 학습법', '게임 프로그래밍 패턴'을 추천하고 싶다.

 

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

 

책의 초반에 'GoF의 디자인 패턴'을 언급하였듯 이 책을 최초의 '디자인 패턴' 서적으로 택한 독자보다는 이미 다른 디자인 패턴 서적을 한권쯤 읽어보고, 자신의 분야에 책의 제목처럼 "쉽게 배워 바로 써먹는" 디자인 패턴을 원하는 독자들이 많을 것이라 짐작해 본다.

프로그래밍 언어 인기 순위나 개발자 선호도를 보아서도 php는 주력 언어에서 밀려난 것은 어쩔 수 없는 현실이다(페이스북도 여전히 php를 사용하고 있긴 하다). 저자는 다년간 php를 사용하고 여러 관련 서적도 집필한 php 전문가여서 이 책 제목 어디에서도 찾아 볼 수 없는 php를 예제로 사용한 디자인 패턴 서적이다.

php가 태생이 객체지향을 목적으로 설계된 언어가 아니고 중간에 객체지향 프로그래밍 기법이 도입된 언어라는 점에서도 조금 아쉽다. 오히려 저자의 또하나의 강점인 임베디드 영역에서의 경험을 살려 비 객체지향 언어인 C언어 혹은 C++등에 특화된 디자인 패턴 서적을 출간했으면 어땠을까 하는 아쉬움 또한 남는다.

php로 쓰여져 있음에도 불구하고 저자가 여러 차례강조하듯 php에 익숙하지 않더라도 전반적인 프로그래밍 언어의 차이가 크지 않음으로 타 언어로의 적용또한 어느정도 가능하리라 본다. 최대한 24개의 패턴을 쉽게 풀어 설명해주려는 시도가 곳곳에 보이며 이러한 패턴을 자기것으로 소화해 낼 수 있으면 좋겠다.

간혹 몇몇 오타가 보이는데, '한빛미디어'출판사 홈페이지에 이미 여러 독자들이 찾아 정리되어 있으니 이또한 참고하면 도움이 많이 될 수 있다.

 

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

객체 지향 프로그래밍, OOP를 알았다면

다음에 알아야 할 것은 바로 디자인 패턴이다.

 

하지만, 알아야 한다는 건 알겠는데

왜 알아야 하고, 어떻게 써 먹어야 하는지를 모를 수 있다.

 

정말 쉽게 배워서 바로 써먹을 수 있도록

도와주는 책이다.

 

 

쉽게배워바로써먹는디자인패턴.jpg

 

객체지향 프로그래밍을 하면서 생길 수 있는

문제들의 여러 유형들을 해결하기 위해

오랜시간 정리된 솔루션인 디자인 패턴.

 

내가 만든 구조가 쵝오라고 생각할 수 있다.

물론 디자인 패턴의 구조가 정답이라고는 할 수 없다.

문제는 해결하지만, 성능은 보장하지 못하는 경우도 있으니...

 

하지만, 대부분의 문제들,

24가지 패턴들이 사용되는 구조에서 발생할 수 있는 오류들

- 객체를 생성하면서 생기는 문제들

- 객체를 확장시키면서 생기는 문제들

- 객체를 사용하면서 생기는 문제들

이런 여러가지 문제들을 자연스럽게 해결해 줄수는 있다.

 

물론, 삽질과 헤딩을 통해 얻는 경험치도 있겠지만

디자인 패턴을 알고 있다면

삽질과 헤딩을 해야 한다는 것도 알 수 있고

그것을 어떻게 회피하고 해결할 수 있는지도 알게된다.

 

거기에 더불어 협업하는 동료들과의 의사소통에서

동일한 구조를 생각할 수 있다는 장점도 있다.

 

 

이 책이 어떻게 쉽게 알 수 있게 해주는데?

 

각각의 패턴들이 가지는 의미는 무엇인지

어떤 문제를 왜, 어떻게 해결하려고 생겨난 것인지

이름은 왜 그런지, 작은 부분 하나 하나까지

자세히 간단한 코드들과 그림으로 설명해주고 있다.

 

이것을 알아야 내가 직면한 문제를 해결할 수 있는데

어떤 패턴이 적절한 해결책인지 알 수 있을테니까.

 

단, 저자가 PHP를 사용하고 있어서

다른 프로그래밍 언어를 사용한다면

약간 혼란스러울 수도 있긴 하지만

기본 개념적인 코드들이니 그리 어렵지는 않은 것 같다.

 

 

 

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

 

 

쉽게 배워 바로 써먹는 디자인 패턴

- php 실습 -

이미지 1.png

안녕하세요. 율리시스SS입니다.

'쉽게 배워 바로 써먹는 디자인 패턴' 해당 도서의 실습 언어는 php입니다. php가 생소할수도 있는데 C 혹은 JAVA를 배워보신 분들은 크게 이해가 어렵지는 않습니다. 하지만 php는 요즘 잘 사용하지 않은 언어라기 보다 새로운 프로젝트에 잘 사용하지 않으며, 학교에서도 배우지 않는 추세이기 때문에 언어가 php는 조금 아쉬운

부분이였습니다.

 

 

 

 

이미지 2.png

| 처음 장에서는 디자인 패턴에 대해, 객체지향에 대해 간략하게 알려주며 크게 3개의 파트로 나뉘어서 패턴을 알려줍니다.

중간중간 이해를 돕기 위해 이미지가 있으며 설명도 상세하게 잘 되어 있는 편입니다. 

 

 

 

 

 

 

이미지 3.png

| 해당 책을 구매하시는 분들은 php를 어느정도 사용하고 있을것 같은데요.

php의 코드, 그리고 주석도 있어서 php로 설명하는 패턴은 이해하기가 쉬울것 같습니다, 하지만 그게 아니라면 php로 조금 알아야 하기 때문에 런닝타임이 조금

길어지죠. 하지만 대체적으로 코드가 어렵지는 않습니다. php를 실행하면 결과도 알려줍니다.

 

 

이미지 5.png

| 디자인 패턴은 말 그대로 디자인입니다. 그래서 디자인을 상상하면서 이해하는게 개인적으로는 빨랐는데요.

해당 책에서는 패턴의 설명과 함께 디자인을 알려주기 때문에 이해하는건 쉬운편이였습니다.

 

 

 

이미지 6.png

| 모든 디자인 패턴에는 장점과 단점이 있습니다. 그렇기 때문에 다양한 디자인 패턴이 있으며 상황에 맞게 디자인 패턴을 사용하는게 중요합니다.

해당 도서에는 디자인 패턴만 알려주는게 아닌, 장점과 단점을 알려주기 때문에 어떨때 사용하는 패턴인지 이해하기 좋았습니다.

 

 

 

 

이미지 7.png

| 디자인 패턴은 어떻게 하면 유지보수가 쉬운 코드를 짤 수 있을까, 혹은 성능을 좋게 할 수 있을 까 등 다양한 궁금증에 의해서 생겨난 패턴입니다. 다양한 패턴을

하나의 책으로 배울 수 있으며 그리 어렵지 않고, 면접 문제에서도 단골손님이기 때문에 한번 배우는 것을 추천드립니다.

 

 

 

< 쉽게 배워 바로 써먹는 디자인 패턴 >

 

 

한빛미디어 <나는 리뷰어다> 활동을 위해 제공받아 작성하였지만

제공 측의 간섭 없이 필자가 느낀 점 그대로 작성하였습니다.

 

 

작성일 : 2021년 09월 17일

최종 수정일 : 2021년 08월 17일

* 오류 수정은 블로그에서만 합니다.

* 블로그 : http://blog.naver.com/adg0609

CopyRightⓒ.2021.율리시스SS.All Rights Reserved

 

 

디자인 패턴 책이 재미있기는 정말 쉽지 않네요. 

개인적으로 디자인 패턴 책은 잊을만~~ 하면 한번씩은 읽어줘야 하는 책이라고 생각한다. 그렇다고 심오한 원리가 숨겨져 있어 무겁게 한자한자 곱씹어 읽어야 한다는 뜻은 아니고 가볍게나마 ‘그랬었지~’ 라는 느낌으로 한번씩은 상기하면 좋겠다는 것이다. 다만 이것이 나의 편협된 생각인지는 모르겠으나.. 디자인 패턴을 적용하고 설명하는 언어가 php라는 점에서 조금 아쉬움이 있다는걸 숨기지 않겠다. 조금 도 업계에 레퍼런스가 되는 언어라던지(C/C++ or Java) 혹은 트렌디한 언어(python or go)를 통해 디자인 패턴을 설명했었다면 더 좋지 않았을까 싶다. 알게 모르게 php를 많이 쓰고 있고 도메인이 넓기는 하지만 학생들이나 입문자의 관점에서는 프로그래밍 입문을 C/C++, Java, python, go 로 하는 만큼 그런 언어들로 디자인 패턴을 보여줬었다면 조금 더 영양가 있지 않았을까 하는 생각이 들었다. 디자인 패턴 내용 자체는 부족함 없이 설명을 잘해주고 있어 좋았다.

image.png
 
 
 

이번엔 디자인 패턴 책이다.

 

디자인 패턴, 디자인 패턴 말만 들었지 한번도 각 잡고 공부한 적이 없다. 왜 쓰는지 잘 알고 쓰는 건 고작해야 싱글턴 패턴, 빌더 패턴 정도이려나. 가끔 실무에서 일을 하다가 고민되는 지점이 생기면 '이런 문제를 쉽게 풀어가려면 디자인 패턴을 공부해야할까?' 싶었다. 이것도 말이 되고 저것도 말이 되는데 뭐가 더 좋은 방법인지 모르겠을 때. 집에 Head First Design Patterns 책을 가지고 있는데 앞에 10장 읽고 도저히 안 읽혀서 가지고만 있었다. 아무리 번역이 잘 되어도 번역서보다는 국내 도서가 좋다.

 

약 500페이지 분량의 책이고, 컬러인듯 컬러 아닌 책이다. 이런 걸 뭐라고 하지? 주황색, 검은색, 갈색 세 가지 정도의 컬러를 쓰는 듯한데 개인적으로는 이런 책을 매우 선호한다. 얇은 종이의 흑백 책은 정말 싫고, 그냥 흑백 책은 딱딱하고 올 컬러책은 부담스러우므로 이런 책이 딱이다.

 

24가지 패턴을 소개한다.

 

<생성 패턴>

1. 팩토리 패턴

2. 싱글턴 패턴

3. 팩토리 메서드 패턴

4. 추상 팩토리 패턴

5. 빌더 패턴

6. 프로토타입 패턴

 

<구조 패턴>

7. 어댑터 패턴

8. 브리지 패턴

9. 복합체 패턴

10. 장식자 패턴

11. 파사드 패턴

12. 플라이웨이트 패턴

13. 프록시 패턴

 

<행동 패턴>

14. 반복자 패턴

15. 명령 패턴

16. 방문자 패턴

17. 체인 패턴

18. 감시자 패턴

19. 중재자 패턴

20. 상태 패턴

21. 메멘토 패턴

22. 템플릿 메서드 패턴

23. 전략 패턴

24. 인터프리터 패턴

 

많기도 하다.

아예 처음 들어본 것도 있고 몇 번 들어봤지만 뭔지 전혀 모르는 것도 있고 많이 듣고 얼핏 아는 것도 있다. 보다 보니 아, 남들도 똑같은 고민을 했구나 혹은 이미 쓰고 있었구나 싶은 것들이 있어서 흥미롭게 읽을 수 있었다. 초중급으로 분류된 책 답게 내용이 아주 깊거나 어렵지는 않고 말그대로 쉽게 배우는 책이라 부담 없이 봤다. 사실 코드가 PHP로 되어있는 건 모르고 골랐는데 낯설다 뿐이지 아예 못 볼 지경은 아니었다. 내가 쓰는 언어였으면 더 좋았겠으나.

 

이런 책 읽는다고 갑자기 패턴의 달인이 되거나 문제 상황에서 아, 그것! 하지는 않겠지만 읽어두고, 생각날 때마다 들춰보고 잊을만 할 때 다시 꺼내 읽다 보면 옷깃에 꽃물 들듯이 뇌에 스며들지 않을까, 하는 기대를. 이거 하나 읽으면 디자인 패턴 정복! 이라는 마음가짐 보다는 24개의 미니북을 하나로 엮어놓은 책이라고 보면 더 좋을듯.

 

 

 



개발을 공부하면서

많은 디자인 패턴을 알게 됩니다. 디자인 패턴은 쉬운 유지보수와 좋은 성능을 가진 프로그램을 개발하기 위해서 필수적인 요소입니다. 원래는 건축에서 사용되던 것이죠.


디자인 패턴의 종류는 다양합니다. 싱글톤, 팩토리, 추상화, Model 1, 2, Spring MVC, 안드로이드는 MVC, MVP, MVVM, 등등... 각각의 디자인 패턴들의 구성 요소의 종류와 역할을 공부하기 시작하지만 확 와닿지는 않습니다. 그 디자인 패턴을 사용해 개발을 직접 진행하면서 천천히 익히게 되죠. 다시 말해, 쉽지만은 않습니다.

외국어를 배울 때는 어원이나 사용하게 된 배경을 알면 기억에 잘 남고 원어민처럼 자연스럽게 쓸 수 있듯이, 프로그래밍 언어도 배경과 역사를 알고 배우면 보다 쉽게 익히고 능숙하게 사용할 수 있게 될 것입니다. 문화도 모르고 단어랑 문법만 머리속에 우겨넣는다고 정말 외국어를 쓰는 것은 아니니까요. 

 

개발을 공부하면 할수록 객체 의존성의 분리와 추상화 개념에 대해 고민하게 됩니다. 객체 간의 의존 관계를 느슨하게 한다는 것은 어렴풋이 이해했지만 실제 사용은 능숙하게 하지 못하는 입장에서, 디자인 패턴의 변화와 그 이유를 살펴보는 일은 언젠가 꼭 해야 할 일이라고 생각합니다. 이 책은 그 이해를 돕는 책입니다. 크게 생성 패턴, 구조 패턴, 행동 패턴으로 나누어 다양한 디자인 패턴들을 소개합니다.

 

실습 코드는 php로 쓰여 있는데, echo와 변수 값을 부여하는 방식이 ->인 점에서 각각 Shell과 Kotlin의 향기가 느껴졌습니다. 사용해 보지 않은 언어라 좀 낯설었지만 다른 언어와 큰 차이는 없어서 언어 차이로 이해가 어렵지는 않았습니다.

 

쉬운 내용은 아니기 때문에 모든 내용을 무리없이 소화하지는 못했지만 읽어 놓으면 도움이 될 것이 확실한 도서였습니다.

KakaoTalk_Photo_2020-10-25-23-06-27.jpeg

 

내가 디자인 패턴을 처음 접했을때는 'GoF의 디자인 패턴', 'Head First Design Patterns' 정도의 책이 있었던거 같은데 지금 인터넷 서점에 검색해보니 언어별로 꽤 많은 디자인 패턴 책이 출판되어있다. 예제가 PHP로 된 책은 처음 보는데 자바가 주 언어인 나에게도 패턴을 이해하는데 어려운점은 전혀 없었다. 책에서도 PHP외 언어에서 다르게 사용되는 경우 별도로 언급해주며 특정 언어에 종속되지 않도록 구성한것으로 보인다.

한빛미디어 사이트에서도 나오듯이 '초중급' 자가 읽기에 적당한 것 같다. 예제 자체가 단순하고 객체지향 개념과 함께 GoF 디자인 패턴 23가지(+1)를 모두 설명해준다. 몇몇 디자인 패턴 책은 주요 패턴 위주로 설명하는 강박이 있는 나에게는 모든 패턴을 다루었다는 점이 좋았다.

후배들에게 그동안 추천해 주던 책 중 하나가 최범균님의 '개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴' 인데 이 책은 주요 디자인패턴에 대해 다룬다. 최범균님 책을 읽고 다른 패턴들이 궁금하다면 이 책을 보면 좋을 것 같다.

추가로, 역시 번역서가 아니라 번역서의 고통을 느낄 필요가 없다. 국내 저자분들께 감사인사를!

요즘 주위를 보면 많은 사람들이 프로그램에 관심을 보이고 있습니다.
간단한 코딩 몇 줄로 브라우저에서 뭔가 보이고, 컴퓨터에 멋진 화면이 나타납니다.
이렇게 프로그램에 흥미를 느끼고 새롭게 배워가면서 조금씩 실력이 늘어갑니다.
그러다 복잡한 로직을 만나는 순간 머리가 하얗게 됩니다.
도대체 어떻게 풀어가야 할지 도저히 생각이 나지 않습니다.
 
객체지향 프로그래밍이라고 하는데 객체가 무엇인지도 모르겠고, 어떻게 배워야 할지도 막막합니다.
이 책 '쉽게 배워 바로 써먹는 디자인 패턴'은 바로 이럴때 큰 도움이 되는 책입니다.
 
  

pattern.jpg

 

 
디자인 패턴.
프로그램을 제대로 배운 분들은 이미 알고 있는 내용이지만, 비전공자분들에게는 생소한 단어입니다.
'GOF의 디자인 패턴'은 디자인 패턴이라고 하면 바로 떠올리는 명저이죠.
24가지 디자인 패턴에 대해 가장 잘 설명하고 있는 책이기는 하지만 내공이 없다면 쉽게 이해하기 힘든 책이기도 합니다.
그래서 이 책을 기반으로 자바, C, 파이썬, 자바스크립트 등의 언어들은 디자인 패턴을 각자의 언어로 설명한 책들이 있습니다.
하지만 아직까지 PHP로 설명하는 디자인 패턴 책은 없었서 많은 PHP 개발자들이 디자인 패턴을 쉽게 이해하기 어려웠습니다.
그런데 이제 그것을 해결해 줄 책이 나왔습니다.
 
이 책은 디자인 패턴을 생성 패턴, 구조 패턴, 행동 패턴와 같이 크게 3가지 패턴으로 나누고 있습니다.
그리고 각각의 패턴은 아래와 같이 나누어져 있습니다.
생성 패턴 : 팩토리 패턴, 싱글턴 패턴, 팩토리 메서드 패턴, 추상 팩토리 패턴, 빌더 패턴, 프로토타입 패턴
구조 패턴 : 어댑터 패턴, 브리지 패턴, 복합체 패턴, 장식자 패턴, 파사드 패턴, 플라이웨이트 패턴, 프로시 패턴
행동 패턴 : 반복자 패턴, 명령 패턴, 방문자 패턴, 체인 패턴, 감시자 패턴, 중재자 패턴, 상태 패턴, 메멘토 패턴, 템플릿 메서드 패턴, 전략 패턴, 인터프리터 패턴
 
패턴 하나하나에 대해 상세한 이론적 설명과 함께 쉽게 이해할 수 있는 코드도 함께 제공하고 있습니다.
패턴의 특징은 물론이고, 장점과 단점, 비슷한 패턴도 함께 알려주고 있습니다.
 
패턴을 하나하나 공부하다보면 낯익은 것들을 보면서 깜짝 놀랄 수도 있습니다.
이름만 몰랐을 뿐, 이미 패턴을 프로그램에 사용하고 있을 것입니다.
 
그럼, 왜 패턴을 사용해야 할까요?
지금까지 패턴을 몰라도 프로그램을 작성하는데 문제가 없었다면 정말 간단한 프로그램 작업만 했거나, 패턴의 이름만 몰랐을 뿐 이미 사용하고 있을 가능성이 높습니다.
이론적으로 알아야 하는 이유는 보다 더 '쉽게' 개발을 하기 위함입니다.
흔히 노가다라고 하는 단순 작업을 줄이고 더 간편하고 심플한 프로그램을 작성할 수 있습니다.
그리고 성능이나 유지보수 측면에서 매우 효율적이기 때문입니다.
 
이 책은 제목처럼 디자인 패턴을 정말 '쉽게' 설명해 주고 있습니다.
코드가 배우기 쉬운 PHP로 되어 있어 언어에 대해 두려움이 있는 분들에게는 최고의 선택이 될 것입니다.
책을 쉽게 추천하지 않는 스타일인데, 이 책은 보는 도중에도 주변 지인들에게 자신있게 소개하고 있습니다.

20201022_161935.jpg

 

이 책은 다양한 디자인 패턴들의 개념과 예제를 통해 쉽게 설명하고 있습니다.

 

세 파트에 걸쳐서 24개의 패턴을 설명하고 있습니다.

 

PART 1 생성 패턴 - 추상화를 통해 객체 생성하기

PART 2 구조 패턴 - 상속과 합성을 사용해 객체 확장하기

PART 3 행동 패턴 - 복합 구조로 객체의 책임 분산하기

 

소스 코드가 PHP로 되어 있어 처음엔 낮설게 느껴졌지만 이해하기 어렵지는 않았습니다.

 

소프트웨어 공학 관련 도서는 경험치에 따라 느끼는게 달라져서 일정 주기로 반복해서 봐야 한다고 생각합니다.

패턴들을 외워서 과하게 사용하려고 하기 보다, 자연스럽게 사용할 수 있도록 많은 사용 사례들을 봐야 한다고 생각합니다.

 

디자인 패턴을 처음 접하시거나 익숙하지 않으신 분들에게 이 책을 추천합니다.

 

책에서는 패턴의 요소는 크게 4가지 요소를 지닌다고 설명한다. 
위의 큰 틀을 토대로 각 챕터가 진행된다. 

내가 본 챕터로 예를 들자면 '팩토리 패턴'에 대한 이름에 대하여 설명하고 
그 이후로 어떠한 문제로 발생되었고 
이것을 해결하기 위하여 팩토리 패턴이 만들어졌다.라는 흐름을 가지고 진행된다. 
그리고 마지막으로 결과 부분으로 팩토리 패턴에 대한 정리를 해준다. 

그리고 또 한 가지 이 책에 대하여 알아 두면 좋을 점은, 책 속의 예시 코드가  php이다. 
필자는 php에 대하여 잘 모르지만, 프로그래밍 언어가 말하고자 하는 것은 다 비슷하지 않나 라는 마인드로 읽긴 하였다.
매번 java 혹은 c++, python으로 되어있는 예제 코드만 보다가 php로 되어있는 것을 보니 좀 생소했던것 같다. 
책에 나오는 예시 코드의 언어가 무엇이든 상관 없다고 하면 중요하지 않겠지만
그게 아니라면 한 번쯤 고려사항이 될 만한 요소가 되지 않을까 싶다. 


쉽게 배워 바로 써먹는 디자인 패턴.jpg

디자인 패턴.
유명하지만 실제로 읽어본 사람을 만나는 게 쉽지 않은 고전처럼, 많이 들어 봤고 몇몇 패턴은 실제로 사용하지 있지만 24개 패턴을 모두 접해본 사람은 많지 않다고 생각합니다.

많은 경우 몇 가지 패턴 사용에 익숙하다고 생각합니다. 자신이 사용하는 코드가 디자인 패턴에 분류되어 있는지 모르더라도 말이죠.
왜 그렇게 사용하지는 어렴풋이 알고 있고, 어떻게 사용하지는 알고 있으며 잘 쓰고 있는 겁니다.


우리는 자신을 계발하고자 하는 욕구가 있습니다. 좀 더 나아지고자 합니다. 경험을 통해 앞으로 나아가지만 한편으로는 늘 아쉬움을 느낍니다.
그래서, 다른 사람들은 어떻게 하고 있는지, 내가 사용하는 방식이 맞는지, 모르는 부분은 어디인지, 조금 더 잘하려면 어떻게 해야 하는지 알고 싶어 합니다.

다들 비슷한 생각을 가지고 있는 가운데 생각을 행동으로 옮기신 분들이 계십니다. 그들 덕분에 우리는 디자인 패턴이라는 개념을 만날 수 있게 되었습니다.
그들이 찾아서 모아놓은 24가지 패턴.
먼저 만나본 이들은 그 패턴들로 인해 감탄하였고, 개발과 유지보수가 훨씬 우아해졌습니다. 그리고 자신의 그러한 경험을 나누고자 하는 이들이 많아지면서 디자인 패턴은 유명해졌습니다.

너무 유명해졌기 때문일까요, 디자인 패턴이 개발자가 넘어야 할 허들이나 퀘스트처럼 인식되기도 합니다.
알고 싶어 하면서 동시에 부담스러워하는 이름이 되어 버렸습니다.

지켜야 하는 규칙이라면 행동에 제약을 받을 수밖에 없습니다. 하지만, 시각을 조금 바꾸어 따라야 하는 규칙이 아니라 추구하는 가치라고 인식하면 어떨까요?


너무 깊이 들어가지 않습니다. 이제 슬슬 알고자 하는데 너무 깊이 있는 설명이 추가되면 질리거나 거부감을 느낄 수 있는데 그런 부분이 없습니다.

기본이 되는 개념을 계속 상기시킵니다. 조금 반복이 있다고 느낄 수 있으나 각각의 패턴을 설명한다고 생각하면 이해가 가는 부분입니다.
디자인 패턴을 설명하는 책의 특성상 특정 패턴을 골라서 읽는 경우가 많을 수 있습니다. 그렇기에 이 정도는 알고 있다고 가정하고 해당 부분에 대한 설명을 생략하고 패턴 설명에만 집중하면, 패턴이 디디고 서있는 객체 지향의 해당 부분이 단단하지 못해 패턴마저도 흔들리는 상황을 만날 수 있기 때문입니다. 각 패턴을 독립된 하나의 강의 노트라고 보시는 것도 괜찮을 것 같습니다.

비슷한 패턴과 비교하는 부분을 두어 헷갈리지 않도록 합니다. 패턴을 접하다 보면 비슷하다는 느낌을 많이 받습니다. 이렇게 비교하는 부분이 해당 패턴을 더욱 이해할 수 있게 해 줍니다. 차이가 본모습을 또렷하게 만듭니다.

간단한 샘플이나 실무에서 만날 법한 코드를 예로 들어 설명합니다. 설명만으로는 이걸 어디에 쓸지 막막하더라도 코드를 보면 어떻게 활용할지 감을 잡을 수 있습니다.


24개의 패턴을 본 뒤 책을 덮으면 객체 지향의 또 다른 원칙인 SOLID를 다시 보게 됩니다.
단순히 머릿글자만 모아놓은 게 아니라 그 순서에서도 의미를 보실 수 있으리라 생각합니다.

 

[크기변환][회전]untitled.png

 

 

 

디자인 패턴을 공부하고자 책을 열었을 땐, 자바나 C++로 되어 있겠지 하고 펼쳤는데

PHP로 되어 있어 조금 놀랬습니다.

 

저자께서는 JinyPHP 오픈소스 프로젝트를 진행하시면서 다양한 디자인 패턴 기법을 설계하신 준비한 내용을

책으로 정리하셨다고 합니다.

 

우선 PHP 걱정을 많이 했지만... 자바나 C++을 한 번 경험해보셨다면 예제코드가 이해하는데 크게 어려운 부분이 

없었습니다. 소스보다는 대부분그림과 짧은 코드에 이해를 덧붙여 설명을 해주셔서 이해하는데 많은 도움이 되었습니다.

 

책에서는 크게 3가지로 나누어 24가지의 패턴에 대해서 매 장마다 설명을 해줍니다.

 

1. 생성 패턴

- 팩토리, 싱글턴, 팩토리 메서드, 추상 팩토리, 빌더, 프로토타입 패턴

 

2. 구조 패턴

- 어댑터, 브리지, 복합체, 장식자, 파사드, 플라이웨이트, 프록시 패턴

 

3. 행동 패턴

- 반복자, 명령, 방문자, 체인, 감시자, 중재자, 상태, 메먼토, 템플릿 메서드, 전략, 인터프리터 패턴

 

다만 PHP는 안써봤기에 우선은 코드를 실행해보진 않고, 디자인 패턴을 이해하기 위해 책을 쭉 읽어보았습니다.

24가지의 다양한 패턴을 알 수 있었고, 한가지 패턴이 끝날 때마다, 정리 부분에서 나와있는 내용이 저에게는 

가장 도움이 됐던거 같습니다.

 

디자인 패턴을 제대로 공부해본 적은 없지만 한 번 더 읽어보고 이해가 되면, 제가 할 수 있는 자바나 자바스크립트로

코드를 짜보면서 책을 한번 더 읽어보면 많은 도움이 될꺼 같습니다. 

디자인 패턴을 알고 계신가요?

디자인의 일종인가 생각해 볼 수 있습니다.


디자인하면 디자이너란 생각이 듭니다.


패턴은 일정하게 복제된 이미지가 떠오릅니다.


담요 중에도 물방울 모양의 패턴 담요도 있습니다.


여러분은 어떤 게 떠오르시나요?

스스로 한번 생각해보시면 좋겠습니다.


오늘 책을 한 권 추천하고자 합니다.


책 제목은 '쉽게 배워 바로 써먹는 디자인 패턴' 입니다.


패턴은 말하는 것과 유사합니다.


말을 할 때도 중복되게 말하는 것을 다들 선호하지 않습니다.


요점만 간단하게 말하는 것을 좋아합니다.


반복적인 일은 하기 싫어지는 경향이 있습니다.


패턴은 발명에 가깝기보단 발견하는 것입니다.


그러면 패턴에 대해 알아보겠습니다.


 

pattern3.png

 

 

 

◆ 객체지향

객체지향은 소프트웨어 개발 방법론입니다.


소프트웨어적인 문제를 코드로 구현할 때 적용하는 겁니다.


객체지향 언어에는 C++, 자바가 있습니다.


패턴이 반복적인 것을 의미하는 위에서 말했습니다.


각 코드를 재사용 가능한 형태로 만드는 것이 객체지향입니다.


한마디로 문제를 해결하는 방법이 패턴화로 변화하게 된 것으로 볼 수 있습니다.


객체지향으로 개발하려면 지켜야 할 원칙도 있습니다.


단일 책임의 원칙, 개방 폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리의 원칙, 의존 관계 역전의 원칙입니다.


 

pattern4.png

 

 

 

◆ 패턴의 유래

패턴의 유래에 대해 말씀드리겠습니다.


사전적 의미의 패턴은 일정한 형태나 양식이 반복되는 것을 의미합니다.


패턴의 원리는 다르게 쓰일 수 있습니다.


개발에서 디자인 패턴은 반복되는 패턴 원리에 공학적인 개념을 도입한 것입니다.


이를 통해 반복적이고 복잡한 것을 빠르게 해결할 수 있습니다.


패턴 개념의 시작은 건축학에서 시작됐습니다.


건축물에도 패턴이 새겨진 것들을 볼 수 있습니다.


 

pattern2.png

 

 

 

끝으로 패턴은 비슷한 부분이 많다는 것을 보여줍니다.


일어난 문제에 대해 파악하고 해결했던 방법을 모으는 것도 하나의 패턴입니다.


패턴이 생기게 된 것에 대해 과정을 이해하는 게 좋습니다.


의도와 목적을 파악하면 패턴을 정확하게 이해할 수 있습니다.


이 책은 24개의 패턴의 공통된 요소가 있는데요.

요소는 이름, 문제, 해법, 결과입니다.


패턴이 익숙하게 되면 과거의 코드와 새로운 코드를 학습할 때 시간도 단축시켜줍니다.

 

이 책을 통해 디자인 패턴을 이해하는 데 도움 될 것입니다.

 

 

pattern1.png

 

 

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
쉽게 배워 바로 써먹는 디자인 패턴
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
쉽게 배워 바로 써먹는 디자인 패턴
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
쉽게 배워 바로 써먹는 디자인 패턴
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0