.
본문 바로가기
디자인패턴

데코레이터 패턴(Decorator Pattern)

by 와칸다개발자 2021. 9. 21.
  abstract class IceCreame{
      public abstract getTaste():void;
  }


  class Vanilla extends IceCreame{
      public getTaste():void {
          console.log('바닐라 아이스크림');
      }
  }


  abstract class IceCreameDecorator extends IceCreame{

      private iceCreame : IceCreame;

      constructor(ic: IceCreame){
          super();
          this.iceCreame = ic;
      }

      public getTaste():void{
          this.iceCreame.getTaste();
      }
  }


  class ChocoDecorator extends IceCreameDecorator{

      constructor(ic:IceCreame){
          super(ic);
      }

      public getTaste():void{
          super.getTaste();
          this.getChocoTaste();
      }

      public getChocoTaste():void{
         console.log('초코 맛 추가');
      }
  }


  class StrawberryDecorator extends IceCreameDecorator{

      constructor(ic:IceCreame){
          super(ic);
      }

      public getTaste():void{
          super.getTaste();
          this.getChocoTaste();
      }

      public getChocoTaste():void{
         console.log('딸기 맛 추가');
      }
  }


  const strawberry_choco: IceCreame = 
  new StrawberryDecorator(new ChocoDecorator(new Vanilla()));
  strawberry_choco.getTaste();

'디자인패턴' 카테고리의 다른 글

퍼사드 패턴(Facade Pattern)  (0) 2022.02.04
팩토리 패턴1 (factory pattern)  (0) 2021.09.24
전략패턴 (Strategy Pattern )  (0) 2021.09.21
싱글톤 패턴 (singleton pattern)  (0) 2021.09.16

댓글