Head First 3

[Design Pattern] Decorator Pattern

헤드퍼스트의 Design Pattern 중 세번째, Decorator Pattern 입니다. Decorator Pattern 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. Decorator Pattern 에 대한 정의입니다. 하지만 이 내용을 보면 코드가 어떻게 생겼는지 감을 잡기가 어렵습니다. 책의 예제를 보면서 패턴을 설명해보겠습니다. 먼저, 패턴이 적용되지 않은 예제에서 문제점을 살펴보겠습니다. 위의 설계에서 Beverage는 음료를 나타내는 추상 클래스이고, 커피샵에서 판매되는 모든 음료는 이 클래스의 서브 클래스가 됩니다. 위의 설계에서는 메뉴에 우유, 모카, 휘핑 크림 등이 추가할때마다 커피 가격이 올라..

[Design Pattern] Observer Pattern

헤드퍼스트의 Design Patterns 중 두번째, Observer Pattern 입니다. Observer Pattern 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 책에서 정의한 Observer Pattern 입니다. 하지만 이보다 더 중요하게 생각되는 것은 느슨한 결합 (Loose Coupling) 을 설명한 내용이라고 생각이 듭니다. 패턴의 정의를 설명하고 바로 뒤에 이어서 설명을 하고 있는데요, 느슨하게 결합되어 있다는 것은 서로 상호작용을 하지만 서로에 대해서는 잘 모른다는 것을 의미합니다. Observer Pattern 을 학습하면서 이 부분에 대해 생각을 하면 좋을 것 같습니다. 책의 예제를 활용하여 ..

[Design Pattern] Strategy Pattern

헤드퍼스트의 Design Patterns 의 내용을 보며 학습을 하고 기록을 남기려 합니다. 첫번째로는 Strategy Pattern 입니다. Strategy Pattern 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. Strategy 를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 책에서는 Strategy Pattern을 마지막에 이렇게 정리를 하였습니다. 이제 책에 있는 예제를 활용하여 어떤 패턴인지 살펴보겠습니다. 처음에 모든 오리들이 꽥꽥소리를 낼 수 있고, 헤엄칠 수 있기 때문에 Duck에 간단한 코드를 구현했습니다. MallaredDuck 과 RedheadDuck 외에도 다른 유형의 오리들도 Duck 클래스로 부터 상속을 받습니..