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

Esplorazione dell'architettura del decoratore in Java

Questo articolo introduce un semplice esempio di implementazione del design pattern Decorator in Java:

Ecco la diagramma delle classi del design pattern Decorator:


Dalla figura si può vedere che possiamo decorare qualsiasi classe che implementa l'interfaccia Component, inclusi gli stessi decoratori, che possono essere ulteriormente decorati.

Ecco un semplice esempio di design pattern Decorator implementato in Java, che offre un sistema di decoratori per aggiungere caffè di base, latte, cioccolato e zucchero.

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

Risultato dell'esecuzione:

Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento, e ti preghiamo di supportare fortemente il tutorial Yell.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, di proprietà del rispettivo proprietario. Il contenuto è stato contribuito volontariamente dagli utenti di Internet e caricato autonomamente. Questo sito non possiede i diritti di proprietà, non ha sottoposto il contenuto a编辑, né assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente i contenuti sospetti di violazione del copyright.

Ti potrebbe interessare