따봉도치야 고마워

Head First Design Patterns : (1)디자인 패턴 소개 본문

프로그래밍/공부

Head First Design Patterns : (1)디자인 패턴 소개

따봉도치 2020. 9. 9. 16:08

디자인 패턴 소개

모든 패턴은 '시스템의 일부를 다른 부분과 독립적으로 변화시킬 수 있는' 방법을 제공하기 위한 것

 

디자인 원칙

  • 애플리케이션에서 달라지는 부분을 찾고, 달라지지 않는 부분으로부터 분리한다.
  • 구현이 아닌 인터페이스에 맞춰 프로그래밍한다. //여기서 인터페이스는 중의적 의미로 '상위 형식'을 의미함
  • 상속보다는 구성을 활용한다.

 

스트래티지 패턴(Strategy Pattern) : SimUDuck 예제

- fly(), quack() 메소드를 슈퍼 클래스에 정의 시 : 해당 기능이 없어야 하는 서브 클래스는 매번 재정의 해줘야 함

- flyable, quackable 인터페이스를 서브 클래스에서 구현하도록 하면 : 코드 중복 발생

 

*패턴 적용

- 슈퍼 클래스에선 FlyBehavior, QuackBehavior 인터페이스 인스턴스 변수와 해당 변수를 통해 fly(), quack() 메소드를 호출

- 각 행동별로 행동 클래스 추가(FlyRocketPowerd, FlyWithWings...) + 해당 클래스들은 위의 인터페이스 구현

- 각 오리(서브클래스) 마다 기능에 맞춰 인스턴스 변수 초기화

ex) flyBehavior= new FlyWithWings();

 

*스트래티지 패턴

- 알고리즘 군을 정의하고 각각을 캡슐화해 교환해서 사용할 수 있도록 만드는 것.   --> 예제에선 오리의 행동

- 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 가능

 

 

연필을 깎으며 (내 대답)

page 43

- A D F 

- 실제 답 : A B D F

 

page 46

- 비슷한 기능을 구현하면서 코드 중복이 많아져서

 

page 52

1) 로켓 추진으로 나는 행동에 대한 클래스를 추가하고 FlyBehavior 인터페이스를 구현한다

2) 오리 소리가 필요한 곳

 

 

KEYWORD

패턴 카탈로그?

'나중에 어떻게 바뀔지'에 대해 생각하고 개발

Comments