이제 데코레이터 인터페이스를 도입해보자. 데코레이터는 모델을 포함하고 있으며 모델을 대신할 것이다.
1 2 3 4 5
//의류데코레이터는 모델이 옷을 입도록 한다. publicinterfaceClotheDecoratorextendsModel{ voidwearClothes(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
//의류 데코레이터를 구현한 의류 클래스 publicclassShirtsimplementsClotheDecorator{ Model model; publicShirts(Model model){ this.model = model; } //우리가 원하는 추가 기능이다. @Override publicvoidwearClothes(){ System.out.println("셔츠를 입었습니다!"); } //모델을 대신해야 하기 때문에 이 메소드가 구현되어야 한다. @Override publicvoidrunway(){ model.runway(); wearClothes(); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
//이번엔 바지를 구현해보자! 전체적인 방식은 비슷하다. publicclassPantsimplementsClotheDecorator{ Model model; publicPants(Model model){ this.model = model; } @Override publicvoidwearClothes(){ System.out.println("바지를 입었습니다!!"); }