런타임노트

[헤드퍼스트 디자인패턴] 46일차. 610-621pg | 패턴을 적절하게 사용하자 본문

책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ]

[헤드퍼스트 디자인패턴] 46일차. 610-621pg | 패턴을 적절하게 사용하자

D269 2023. 6. 23. 18:52
728x90

46일차


헤드퍼스트 디자인패턴 [8주차_목요일]
610-621pg 


요약

 

**CHAPTER 13. 패턴과 행복하게 살아가기  (feat. 실전 디자인 패턴)**

실전에서 디자인 패턴 활용하기

 

 

[ 디자인 패턴 범주 - 1 ]

1. 생성 패턴(Creational Pattern)

싱글턴, 추상팩토리, 팩토리 메소드 패턴

2. 행동 패턴(Behavioral Pattern)

템플릿 메소드, 싱글턴, 반복자, 옵저버, 상태, 전략패턴

3. 구조 패턴(Structural Pattern)

데코레이터, 컴포지트, 프록시, 퍼사드, 어댑터 패턴

 

[ 디자인 패턴 범주 - 2 : 클래스를 다루는 패턴인지, 객체를 다루는 패턴인지에 따라 분류 ]

1. 클래스 패턴(Class Pattern) : 클래스 사이의 관계가 상속으로 어떻게 정의되는지를 다룹니다. 클래스 사이의 관계는 대부분 컴파일 할 때 결정됩니다.

- 템플릿 메소드, 팩토리 메소드, 어댑터 패턴

2. 객체 패턴(Object Patterns) : 객체 사이의 관계를 다루며, 객체 사이의 관계는 보통 구성으로 정의된다. 일반적으로 실행 중에 관계가 결정되므로 보다 동적이고 유연하다.

- 컴포지트, 데코레이터, 프록시, 전략, 퍼사드, 커맨드, 반복자, 옵저버, 상태, 프로토타입, 추상 팩토리, 싱글턴 패턴.

 

-> 패턴 분류보다 중요한 것은 패턴을 제대로 이해하고, 여러 패턴 사이의 관계를 확실히 파악하는 일. 

-> 패턴을 분류한 이유?

몇 가지 범주로 나눠 놓으면 각각을 조금 더 추상적인수준에서 생각하는 데 도움이 된다. 또 일련의 패턴 그룹 사이의 관계나 같은 그룹 내에 있는 패턴 사이의 관계를 생각해 볼 수도 있다. 

 

 


 

[ 패턴으로 생각하기: 패턴으로 생각하는 데 있어서 도움이 될 만한 내용 ]

1. 최대한 단순하게(KISS, Keep It Simple) : "어떻게 하면 단순하게 해결할 수 있을까?"에 초점.

2. 디자인패턴은 만병통치약이 아니다. :패턴을 사용할 때는 여러분이 설계한 디자인에 미칠 영향과 결과를 주의 깊게 생각해야 한다.

3. 패턴이 필요할 때 : 디자인을 할 때, 지금 디자인상의 문제에 적합하다는 확신이 든다면 패턴을 도입해야 한다.

간단한 해결책으로 문제가 해결되는 데도 시스템의 어떤 부분이 변경될 거라고 예측되는 상황에는 디자인 패턴을 적용해야 한다.

4. 리팩터링과 패턴 : 리팩터링의 목적은 행동 변경이 아니라 구조 개선에 있다.

5. 꼭 필요하지 않은 패턴은 빼버린다. 지금 있는 디자인에서 디자인 패턴을 제거하는 일을 두려워하지 마세요. : 패턴보다 간단한 해결책이 더 나을 것 같다 싶을 때 패턴을 제거.

6. 꼭 필요하지 않은 패턴을 미리 적용할 필요는 없다.

 

 

[ 패턴을 대하는 마음가짐 ]

- 초보자 : 언제나 패턴을 사용해야지

- 중급자 : 어떤 상황에 패턴이 필요하고 필요하지 않은지 파악 가능

- 그랜드 마스터 : 패턴을 자연스럽게 구사할 수 있다.

 

 

[ 용어를 공유하는 5가지 방법 ]

1. 디자인 회의에서

2. 다른 개발자들과 토론할 때

3. 아키텍처 문서에

4. 코드 주석을 달 때, 클래스와 메소드 이름을 만들 때

5. 개발자 모임에서

 

 

 

발췌

필살기는 함부로 쓰면 안된다. 디자인 패턴은 도구에 불과하다. 필요할 때만 써야 하는 도구.

 

 

728x90
반응형