전체 글

전체 글

    CHAPTER 03.데코레이터 패턴

    데코레이터 패턴 이해를 위한 간단한 문제 제안 2022년 스타버즈 커피는 커피 브랜드를 대표하는 브랜드로 성장해있습니다. 1971년 스타버즈는 지금처럼 회사가 커질줄 몰랐고 메뉴도 지금처럼 많지 않았습니다. 사업을 시작할 무렵에는 아래와 같은 설계 구조로 이뤄져 있습니다. Beverage는 음료를 나타내는 추상클래스입니다. 매장에서 판매되는 모든 음료는 이 클래스의 서브클래스가 됩니다. Beverage의 cost()메소드는 추상 메소드입니다. 서브클레스에서는 이 메소드를 구현해야합니다. Beverage의 description이라는 인스턴스변수는 각 서브클래스에서 설정되며 커피에 대한 설명 정보가 문자열로 저장됩니다. description이라는 변수 정보는 getDescription() 메소드를 통해 정보..

    CHAPTER 02.옵저버 패턴

    옵저버 패턴 이해를 위한 간단한 문제 제안 독자에게 기상 조건인 온도, 습도, 기압 3가지의 변화를 감지하는 시스템을 만들라는 요구사항이 들어옵니다. 위의 3가지 항목들은 실시간으로 갱신되야 합니다. 디스플레이를 손쉽게 추가할 수 있어야 합니다.이 기기는 다른 추가사항 또한 바로 넣을 수 있도록 확장 가능해야 합니다. 요구 사항을 좀 더 자세히 설명해보겠습니다. 저희들이 구현해야하는 것은 WeatherData 객체입니다. 가상 스테이션은 습도, 온도, 기압 센서로부터 데이터를 받습니다. 이때 변경되는 데이터는 실시간으로 받기 때문에 WeatherData객체는 실시간으로 데이터를 변경해줘야합니다. WeatherData객체는 가상 스테이션과 통신해서 기상 데이터를 가져옵니다. WeatherData객체는 디스..

    CHAPTER 01.디자인 패턴 소개와 전략 패턴

    전략 패턴 이해를 위한 간단한 문제 제안 전략패턴을 이해하기 위해 간단한 문제를 먼저 제시해보도록 하겟습니다. “SIMUDuck”이라는 오리 게임을 만들기 위해 오리라는 객체를 정의하고 오리를 상속받아 도메인에 맞는 오리를 생성하는 설계 구조입니다. 이런 설계 상황에서 기획자의 요구에 의해 Duck이라는 객체에 Fly()라는 메소드를 추가 받아야 하는 요구사항이 들어온것입니다. 개발자는 상속을 사용하여 구현한 상태에서 모든 오리는 날수 있다고 생각하여 Fly()라는 메소드를 추가하게 됩니다. 근데 이런 상황에서 만약 모형 오리라는 클래스를 추가하게 되면 날지 못하는 오리들도 날게 되는 기이한? 오류가 발생하게 됩니다. 이처럼 전략패턴은 상속에 대한 부정적인 관점으로 인터페이스 기반 설계와 구현을 지향합니..