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!