Maison  >  Article  >  Java  >  Une étude préliminaire sur les modèles de conception de décorateurs Java

Une étude préliminaire sur les modèles de conception de décorateurs Java

高洛峰
高洛峰original
2017-01-19 16:09:301162parcourir

Cet essai présente principalement l'implémentation d'un modèle de conception de décorateur simple en Java :

Tout d'abord, jetons un coup d'œil au diagramme de classes du modèle de conception de décorateur :

Une étude préliminaire sur les modèles de conception de décorateurs Java

Comme vous pouvez le voir sur l'image, nous pouvons décorer n'importe quelle classe d'implémentation de l'interface du composant, et ces classes d'implémentation incluent également le décorateur lui-même, et le décorateur lui-même peut également être à nouveau décoré.

Ce qui suit est un modèle de conception de décorateur simple implémenté en Java. Il fournit un système de décorateur qui commence par l'ajout de base de café et peut continuer à ajouter du lait, du chocolat et du sucre.

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

Résultats de l'opération :

Une étude préliminaire sur les modèles de conception de décorateurs Java

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun, j'espère aussi. que tout le monde prendra en charge PHP Chinese Net.

Pour plus d'articles liés à l'exploration préliminaire des modèles de conception de décorateurs Java, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn