Maison >Java >javaDidacticiel >Résumer et organiser les modèles de décorateur JAVA (exemples détaillés)
Cet article vous apporte des connaissances pertinentes sur java, qui introduit principalement des problèmes liés aux modèles de conception. Il fait principalement référence au contenu pertinent du modèle de décorateur, qui fait référence à la modification dynamique de la structure de l'objet existant sans la modifier. être utile à tout le monde.
Apprentissage recommandé : "Tutoriel vidéo Java"
Définition du motif décorateur : Désigne le changement dynamique de la structure d'un objet existant sans le changer C'est un motif cela ajoute des responsabilités à l'objet (c'est-à-dire ajoute ses fonctions supplémentaires). Il appartient au modèle structurel de l'objet.
1. Les décorateurs sont un complément puissant à l'héritage et sont plus flexibles que l'héritage. Ils peuvent étendre dynamiquement les fonctions à un objet sans changer l'objet d'origine, plug and play
2. Pas besoin de classes décoratives en utilisant And. la disposition et la combinaison de ces classes de décoration peuvent produire différents effets
3. Le mode décorateur adhère complètement au principe d'ouverture et de fermeture
Le mode décorateur ajoutera de nombreuses sous-classes et une utilisation excessive augmentera la complexité du programme.
Normalement, l'extension des fonctionnalités d'une classe est implémentée à l'aide de l'héritage. Cependant, l'héritage a des caractéristiques statiques et un degré élevé de couplage, et à mesure que les fonctions étendues augmentent, les sous-classes se développeront. Si vous utilisez des relations de composition pour créer un objet wrapper (c'est-à-dire un objet de décoration) pour envelopper l'objet réel et lui fournir des fonctionnalités supplémentaires tout en gardant inchangée la structure de classe de l'objet réel, tel est l'objectif du modèle de décorateur. Analysons sa structure de base et sa méthode de mise en œuvre.
Cas : Hei Xiaohu a attrapé les sept héros et a rôti le Hongmao
Rôle du composant abstrait (composant) : sept héros
Rôle du composant concret (ConcreteComponent) : Hongmao
Rôle du décorateur abstrait : ajouter des ingrédients
Rôle de Décorateur de béton : ajouter du sel et du cumin.
L'interface Qixia déclare une méthode abstraite de barbecue
public interface Qi { void show();}
La classe Hongmao implémente l'interface Qixia et implémente la méthode de rôtissage de Hongmao
public class Hong implements Qi { @Override public void show() { System.out.println("烧烤一个虹猫"); }}
C'est un décor abstrait ator que implémente l'interface Qixia, déclare un attribut Qixia et est utilisé pour appeler la méthode barbecue Qixia
public class JiaLiao implements Qi { private Qi qi; JiaLiao() { } JiaLiao(Qi component) { this.qi = component; } @Override public void show() { qi.show(); }}
Hérite de la classe abstraite et réécrit la méthode barbecue, en ajoutant A salt
public class Yan extends JiaLiao { private Qi qi; Yan() { } Yan(Qi qi) { super(qi); } @Override public void show() { super.show(); add(); } public void add() { System.out.println("加盐"); }}
J'ai hérité de la classe abstraite et réécrit la méthode de grillade, ajouté un cumin
public class ZiRan extends JiaLiao { private Qi qi; ZiRan() { } ZiRan(Qi qi) { super(qi); } @Override public void show() { super.show(); add(); } public void add() { System.out.println("加孜然"); }}
un nouveau chat arc-en-ciel et l'ai grillé.
Ajoutez du sel
Ajoutez du sel et du cumin
public class Demo { public static void main(String[] args) { Qi qi = new Hong(); qi.show(); System.out.println(); Qi qi1 = new Yan(qi); qi1.show(); System.out.println(); Qi qi2 = new ZiRan(qi1); qi2.show(); }}
Vous pouvez non seulement griller Hongmao mais aussi d'autres Seven Heroes. Il vous suffit d'ajouter une classe pour implémenter l'interface Seven Heroes.
Et l'ajout de sel ou de cumin ne changera pas la qualité originale de la viande de Hongmao.
Apprentissage recommandé : "Tutoriel vidéo Java"
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!