Maison  >  Article  >  Java  >  Apprentissage du mode de décoration Java

Apprentissage du mode de décoration Java

黄舟
黄舟original
2017-10-13 10:19:251805parcourir

Cet article présente principalement en détail les informations pertinentes sur le mode décoration dans l'apprentissage des modèles de conception Java. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

Mode décoration : don dynamique Un objet ajoute des responsabilités supplémentaires, et le modèle de décoration est plus flexible que le sous-classement en termes d'ajout de fonctionnalités.

Avantages : Les classes de décoration et les classes décorées peuvent se développer indépendamment et ne seront pas couplées les unes aux autres. Le mode Décoration est un mode alternatif à l'héritage qui peut étendre dynamiquement les fonctions d'une classe d'implémentation.

Inconvénients : La décoration multicouche est plus compliquée.

Exemple : Configurer des vêtements pour une personne

1 : Diagramme de structure du code

2 : Créer une classe de personne (ConcreteComponent)


package DecoratorModel;

/**
 * 2017-10-9 10:39:09
 * 装饰器设计模式
 * Person 类 ConcreteComponent
 * @author 我不是张英俊
 *
 */
public class Person {

  public Person(){}
  
  private String name;
  public Person(String name){
    this.name=name;
  }
  
  public void Show(){
    System.out.println("装扮的"+name);
  }
}

3 : Catégorie de vêtements


package DecoratorModel;

/**
 *服饰类(Decorator)
 * @author 我不是张英俊
 *
 */
public class Finery extends Person{

  protected Person component;
  //打扮
  public void Decorate(Person component){
    this.component=component;
  }
  
  public void Show(){
    if(component!=null){
      component.Show();
    }
  }
}

4 : Catégorie de vêtements spécifique


public class Tshirts extends Finery {
  public void Show(){
    System.out.println("大T恤");
    super.Show();
    }
}

public class BigTrouser extends Finery {
  public void Show(){
    System.out.println("垮裤");
    super.Show();
  }
}

public class Sneakers extends Finery {
  public void Show(){
    System.out.println("破球鞋");
    super.Show();
    }
}

public class Suit extends Finery {
  public void Show(){
    System.out.println("西装");
    super.Show();
  }
}

public class Tie extends Finery {
  public void Show(){
    System.out.println("领带");
    super.Show();
  }
}

public class LeatherShoes extends Finery {
  public void Show(){
    System.out.println("皮鞋");
    super.Show();
  }
}

5 : Classe test


public class test {

  public static void main(String[] args) {
    Person xc=new Person("旺财");    
    Sneakers pqx=new Sneakers();
    BigTrouser kk=new BigTrouser();
    Tshirts dtx=new Tshirts();
    pqx.Decorate(xc);
    kk.Decorate(pqx);
    dtx.Decorate(kk);
    dtx.Show();
  }

}

6 : Console

Gros T-shirt
Baggy pantalons
Baskets cassées
Habillez-vous pour la prospérité

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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