디자인패턴 2

[디자인 패턴] 옵저버 패턴

이 글은 [헤드 퍼스트 디자인 패턴]의 2장 옵저버 패턴을 정리한 글입니다. 기상 모니터링 애플리케이션 예제 요구사항 현재 기상 조건(온도, 습도, 기압)의 변화를 실시간으로 디스플레이 장비에 반영해야 합니다. 갱신된 기상 정보는 WeatherData 객체의 세터 메소드를 통해 WeatherData 내부의 상태를 변화시키는 방식으로 동작한다고 가정합니다. 디스플레이 장비는 로직이 다양하며 확장 가능하다는 것을 전제합니다. 현재는 기상 조건, 기상 통계, 기상 예보 세 가지의 디스플레이 장비들이 있습니다. 먼저 나이브하게 WeatherData 클래스를 만들어 보겠습니다. MeasurementChanged 메소드는 getter 메소드를 통해 현재 기상 정보를 가져온 후 각 디스플레이 객체의 update 메소..

디자인패턴 2023.10.06

[디자인 패턴] 전략 패턴

헤드 퍼스트 디자인 패턴 1장의 내용을 정리한 글입니다. 오리 시뮬레이션 게임 SumUduck 예제 이 게임에는 헤엄치고, 꽥꽥 소리를 내는 다양한 오리가 등장합니다. 이를 구현하기 위해 일반적인 객체지향 기법을 사용해 봅니다. 1. 슈퍼클래스 Duck 클래스를 만든 다음, Duck을 상속하는 다른 오리들을 만들어 봅니다. abstract class Duck { // 모든 오리가 꽥꽥 소리를 낼 수 있습니다. quack(); // 모든 오리가 헤엄을 칠 수 있습니다. swim(); // 모든 오리의 모양이 다르므로 display() 메소드는 추상 메소드입니다. display(); } class MallardDuck extends Duck { display() // 나는 말라드덕 } class Redhea..

디자인패턴 2023.10.02