Définition: étendez dynamiquement la fonctionnalité d'un objet sans avoir à modifier le fichier d'origine et à utiliser l'héritage. Il enveloppe l'objet réel en créant un objet wrapper, c'est-à-dire la décoration.
Caractéristiques:
(1) Les objets décoratifs et les objets réels ont la même interface. De cette façon, l'objet client peut interagir avec l'objet décoratif de la même manière que l'objet réel.
(2) L'objet décoratif contient une référence à un objet réel
(3) L'objet décoratif accepte toutes les demandes du client. Il transmet ces demandes à l'objet réel.
(4) Les objets décoratifs peuvent ajouter des fonctions supplémentaires avant ou après le transfert de ces demandes. Cela garantit qu'à l'exécution, des fonctions supplémentaires peuvent être ajoutées à l'extérieur sans modifier la structure d'un objet donné. Dans la conception orientée objet, les extensions fonctionnelles d'une classe donnée sont généralement obtenues grâce à l'héritage.
Applications dans le développement au niveau de l'entreprise et les frameworks couramment utilisés: Streaming IO Architecture sous-jacente
composition:
(1) Rôle du composant abstrait: Donnez une interface abstraite pour réguler les objets prêts à recevoir des responsabilités supplémentaires.
(2) Rôle du composant concret: définir une classe qui recevra des responsabilités supplémentaires.
(3) Rôle du décorateur: détient une instance d'un objet composant et implémente une interface cohérente avec l'interface de composante abstraite.
(4) Rôle du décorateur en béton: responsable de l'ajout de responsabilités supplémentaires aux objets composants.
Exemples spécifiques:
/ ** * Les exemples suivants de maisons de décoration * / Demo de classe publique {public static void main (String [] args) {générichouse house = new Generichouse (); Garage de garage = nouveau garage (maison); garage.dosomething (); Cuisine cuisine = nouvelle cuisine (maison); cuisine.dosomething (); }} / ** * Rôle du composant abstrait: une interface pour réguler l'emplacement de la décoration spécifique * / interface abstracthouse {public void dosomething ();} / ** * Rôle décoratif: maintenez l'objet à décorer * / classe Master implémente l'abstracthouse {privé abstracthouse abstracthouse; Public Master (Abstracthouse Abstracthouse) {this.abstracthouse = abstracthouse; } public void doSomething () {System.out.println ("Rôle décoratif: porte-rôle décoratif, voici le propriétaire de la maison"); Abstracthouse.dosomething (); }} / ** * Rôle de composant spécifique: Objet spécifique qui doit être décoré * / class Generichouse implémente l'abstracthouse {public void dosomething () {System.out.println ("Rôle spécifique du constructeur: la maison peut vivre dans des personnes et un abri par vent et pluie!"); }} / ** * Rôle décoratif spécifique: La décoration spécifique est faite ici, et elle hérite du rôle décoratif. Parce que le rôle décoratif détient l'objet décoratif *, donc il tient également l'objet décoratif et peut être décoré * / class Garage étend Master {public Garage (Abstracthouse Abstracthouse) {Super (abstracthouse); } public void doSomething () {super.doSomething (); System.out.println ("Rôle décoratif spécifique: faire la décoration ici, décorer une de la maison dans un garage, afin que la maison puisse stocker la voiture"); }} / ** * Rôle décoratif spécifique: La décoration spécifique est faite ici, elle hérite du rôle décoratif, car le rôle décoratif détient l'objet décoratif, * de sorte qu'il contient également l'objet décoratif et peut être décoré * / Class Kitchen étend Master {Public Kitchen (Abstrathouse Abstrathouse) {super (abstrathouse); } public void doSomething () {super.doSomething (); System.out.println ("Rôle décoratif spécifique: faire la décoration ici, décorer une de la maison dans une cuisine, afin que la maison puisse cuisiner"); }}Dans le développement réel, la fonction d'emballage des modèles de décoration joue un grand rôle. Nous pouvons effectuer d'autres opérations sur l'objet sans modifier l'objet d'origine, ce qui peut nous empêcher de transformer l'objet, mais en même temps, nous pouvons bien terminer certaines opérations.
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.