Le modèle décorateur est un modèle de conception structurelle qui permet d'ajouter dynamiquement des fonctionnalités d'objet sans modifier la classe d'origine. Il est mis en œuvre grâce à la collaboration de composants abstraits, de composants concrets, de décorateurs abstraits et de décorateurs concrets, et peut étendre de manière flexible les fonctions de classe pour répondre aux besoins changeants. Dans cet exemple, des décorateurs de lait et de moka sont ajoutés à Espresso pour un prix total de 2,29 $, démontrant la puissance du modèle de décorateur pour modifier dynamiquement le comportement des objets.
Anatomie du modèle Decorator dans les modèles de conception Java
Introduction
Le modèle Decorator est un modèle de conception structurelle qui permet d'ajouter dynamiquement des fonctionnalités à un objet sans modifier sa classe de base. En utilisant des objets décorateurs, les fonctionnalités de classe peuvent être étendues de manière flexible pour répondre aux besoins changeants.
Principe
Le modèle de décorateur fonctionne de la manière suivante :
Exemple de code
// 抽象组件 interface Beverage { double cost(); } // 具体组件 class Espresso implements Beverage { @Override public double cost() { return 1.99; } } // 抽象装饰器 abstract class CondimentDecorator implements Beverage { protected Beverage beverage; public CondimentDecorator(Beverage beverage) { this.beverage = beverage; } } // 具体装饰器 class Milk extends CondimentDecorator { public Milk(Beverage beverage) { super(beverage); } @Override public double cost() { return beverage.cost() + 0.10; } } // 具体装饰器 class Mocha extends CondimentDecorator { public Mocha(Beverage beverage) { super(beverage); } @Override public double cost() { return beverage.cost() + 0.20; } } // 实战案例 public class CoffeeShop { public static void main(String[] args) { Beverage espresso = new Espresso(); // 添加牛奶和摩卡装饰器 Beverage milkEspresso = new Milk(espresso); Beverage mochaMilkEspresso = new Mocha(milkEspresso); // 计算饮料总价 double totalCost = mochaMilkEspresso.cost(); System.out.println("Beverage cost: " + totalCost); } }
Sortie :
Beverage cost: 2.29
Conclusion
Le modèle de décorateur peut être utilisé pour étendre dynamiquement les fonctionnalités d'un objet sans modifier le code existant. Il fournit un moyen flexible et élégant de répondre aux besoins changeants tout en gardant le code maintenable et extensible.
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!