English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 장식자 디자인 패턴 탐구

이 글은 Java로 간단한 디코레이터 디자인 패턴을 구현하는 내용을 주로 소개합니다:

먼저 디코레이터 디자인 패턴의 클래스 그래프를 보겠습니다:


그림에서 볼 수 있듯이, 우리는 Component 인터페이스의 어떤 구현 클래스를 장식할 수 있으며, 이 구현 클래스는 디코레이터 자체도 포함됩니다. 디코레이터 자체도 다시 장식될 수 있습니다.

이 JSON은 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();
  }
}

실행 결과:

이것이 이 문서의 전부입니다. 많은 도움이 되었기를 바랍니다. 또한, 다음을 많이 지원해 주시기를 바랍니다. 노래教程.

고지: 이 문서의 내용은 인터넷에서 가져왔으며, 원작자의 소유물입니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집을하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있는 내용을 발견하면 메일을 notice#w로 보내 주시기 바랍니다.3codebox.com(메일을 보내는 경우, #을 @으로 변경하십시오. 신고를 하시고 관련 증거를 제공하십시오. 실제로 확인되면, 이 사이트는 즉시 위반된 내용을 삭제합니다.)

좋아하는 것