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:
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:
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!