>  기사  >  Java  >  Java 데코레이터 디자인 패턴에 대한 예비 연구

Java 데코레이터 디자인 패턴에 대한 예비 연구

高洛峰
高洛峰원래의
2017-01-19 16:09:301121검색

이 에세이는 주로 Java에서 간단한 데코레이터 디자인 패턴의 구현을 소개합니다.

먼저 데코레이터 디자인 패턴의 클래스 다이어그램을 살펴보겠습니다.

Java 데코레이터 디자인 패턴에 대한 예비 연구

그림에서 볼 수 있듯이 Component 인터페이스의 어떤 구현 클래스라도 꾸밀 수 있으며, 이러한 구현 클래스에는 데코레이터 자체도 포함되어 있으며, 데코레이터 자체도 다시 꾸밀 수 있습니다.

다음은 Java로 구현된 간단한 데코레이터 디자인 패턴입니다. 커피의 기본 추가로 시작하여 계속해서 우유, 초콜릿, 설탕을 추가할 수 있는 데코레이터 시스템을 제공합니다.

interface Component {
  void method();
}
class Coffee implements Component {
 
  @Override
  public void method() {
    // TODO Auto-generated method stub
    System.out.println("倒入咖啡");
  }
   
}
class Decorator implements Component {
  public Component comp;
  public Decorator(Component comp) {
    this.comp = comp;
  }
  @Override
  public void method() {
    // TODO Auto-generated method stub
    comp.method();
  }
   
}
class ConcreteDecorateA extends Decorator {
  public Component comp;
  public ConcreteDecorateA(Component comp) {
    super(comp);
    this.comp = comp;
  }
  public void method1() {
    System.out.println("倒入牛奶");
  }
  public void method2() {
    System.out.println("加入糖 ");
  }
  public void method() {
    super.method();
    method1();
    method2();
  }
}
class ConcreteDecorateB extends Decorator {
  public Component comp;
  public ConcreteDecorateB(Component comp) {
    super(comp);
    this.comp = comp;
  }
  public void method1() {
    System.out.println("加入巧克力");
  }
  public void method() {
    super.method();
    method1();
  }
}
public class TestDecoratePattern {
  public static void main(String[] args) {
    Component comp = new Coffee();
    comp.method();
    System.out.println("--------------------------------------------------");
    Component comp1 = new ConcreteDecorateA(comp);
    comp1.method();
    System.out.println("--------------------------------------------------");
    Component comp2 = new ConcreteDecorateB(comp1);
    comp2.method();
    System.out.println("--------------------------------------------------");
    Component comp3 = new ConcreteDecorateB(new ConcreteDecorateA(new Coffee()));
    comp3.method();
    System.out.println("--------------------------------------------------");
    Component comp4 = new ConcreteDecorateA(new ConcreteDecorateB(new Coffee()));
    comp4.method();
  }
}

운영 결과:

Java 데코레이터 디자인 패턴에 대한 예비 연구

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트를 지원합니다.

Java 데코레이터 디자인 패턴의 예비 탐색과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.