Heim  >  Artikel  >  Java  >  Eine vorläufige Studie zu Designmustern von Java-Dekoratoren

Eine vorläufige Studie zu Designmustern von Java-Dekoratoren

高洛峰
高洛峰Original
2017-01-19 16:09:301166Durchsuche

In diesem Aufsatz wird hauptsächlich die Implementierung eines einfachen Dekorator-Entwurfsmusters in Java vorgestellt:

Werfen wir zunächst einen Blick auf das Klassendiagramm des Dekorator-Entwurfsmusters:

Eine vorläufige Studie zu Designmustern von Java-Dekoratoren

Wie Sie auf dem Bild sehen können, können wir jede Implementierungsklasse der Komponentenschnittstelle dekorieren, und diese Implementierungsklassen umfassen auch den Dekorator selbst, und der Dekorator selbst kann auch erneut dekoriert werden.

Das Folgende ist ein einfaches Dekorator-Designmuster, das in Java implementiert ist. Es bietet ein Dekoratorsystem, das mit der grundlegenden Zugabe von Kaffee beginnt und weiterhin Milch, Schokolade und Zucker hinzufügen kann.

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

Operationsergebnisse:

Eine vorläufige Studie zu Designmustern von Java-Dekoratoren

Ich hoffe, dass es für das Lernen aller hilfreich sein wird dass jeder PHP Chinesisch unterstützen wird.

Weitere Artikel zur vorläufigen Untersuchung von Java-Dekorator-Designmustern finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn