Aperçu
Le mode décoratif est la fonction d'extension des objets de manière transparente au client et est une alternative aux relations de succession. En d'autres termes, le client ne pense pas qu'il existe une différence entre l'objet avant et après la décoration. Le mode décoratif peut étendre la fonction de l'objet sans créer plus de sous-classes. La clé du mode décoratif est que cette extension est complètement transparente.
Structure du motif
Diagramme de classe UML:
Caractères en mode décoration:
Rôle du composant abstrait (projet): donne une interface pour réguler les objets prêts à recevoir des responsabilités supplémentaires.
Rôle de composant spécifique (Employé): Définissez une classe qui recevra des responsabilités supplémentaires
Rôle décoratif (gestionnaire): détient une instance d'un objet composant et définit une interface cohérente avec l'interface composante abstraite
Rôle décoratif spécifique (Managera, ManagerB): Responsable de la «collation» supplémentaire envers les objets des composants
Exemple de code
Entretien de package; Interface Project {void docoding ();} classe Employe implémente Project {@Override public void docoding () {System.out.println ("L'ingénierie est la programmation ..."); }} Class Manager implémente Project {Private Project Project; Public Manager (Project Project) {this.project = project; } @Override public void docoding () {startNewWork (); project.Docoding (); } public void startNewwork () {}} classe Managera étend Manager {public managera (projet Project) {super (projet); } @Override public void startNewwork () {System.out.println ("Development Manager lance un nouveau plan de travail"); }} Class ManagerB étend Manager {public ManagerB (Project Project) {super (projet); } @Override public void startNewwork () {System.out.println ("Test Manager démarre un nouveau plan de travail"); }} classe publique MAINTest {public static void main (String arg []) {project project = new Employe (); Project Managera = New Managera (projet); Project ManagerB = new ManagerB (projet); Managera.Docoding (); ManagerB.Docoding (); }} Avantages et inconvénients du mode décoratif:
avantage:
Le but du mode décoratif et de l'héritage est d'étendre la fonction de l'objet, mais le mode décoratif peut offrir plus de flexibilité que l'héritage. Le mode décoratif permet au système de décider dynamiquement de "coller" une "décoration" nécessaire, et la relation d'héritage est différente. La relation d'héritage est statique et elle est décidée avant l'exécution du système.
En utilisant différentes catégories décoratives spécifiques et combinaisons de ces catégories décoratives, les concepteurs peuvent créer de nombreuses combinaisons de comportement différentes.
défaut:
En raison de l'utilisation de motifs décoratifs, un nombre moins de classes peut être nécessaire que d'utiliser des relations de succession. L'utilisation de moins de classes rend certainement le design plus facile à effectuer. Cependant, en revanche, l'utilisation de motifs décoratifs produit plus d'objets que d'utiliser des relations d'héritage. Plus d'objets peuvent rendre les erreurs difficiles, d'autant plus qu'ils sont tous similaires.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.