Le modèle de décorateur permet d'ajouter de nouvelles fonctionnalités à un objet existant sans modifier sa structure. Ce type de modèle de conception appartient au modèle structurel, qui est un ensemble de classes existantes.
Ce modèle crée une classe décorative pour envelopper la classe d'origine et fournit des fonctionnalités supplémentaires tout en maintenant l'intégrité de la signature de la méthode de classe.
Nous démontrons l'utilisation du mode décorateur à travers l'exemple suivant. Parmi eux, nous décorerons une forme avec différentes couleurs sans changer la classe de forme.
accomplir
Nous allons créer une interface de forme et une classe d'entité qui implémente l'interface de forme. Ensuite, nous créons une classe décorative abstraite ShapeDeCorator qui implémente l'interface de forme et utilisons l'objet de forme comme variable d'instance.
RedShapeDeCorator est une classe d'entité qui implémente ShapeDeCorator.
DecoratorPatterndemo, notre classe de démonstration utilise lecoratrice à la forme rouge pour décorer des objets de forme.
Étape 1
Créer une interface.
Forme.java
Forme d'interface publique {void Draw ();}Étape 2
Créez une classe d'entité qui implémente l'interface.
Rectangle.java
classe publique Rectangle implémente la forme {@Override public void Draw () {System.out.println ("Shape: Rectangle"); }} Circle.javapublic Class Circle Implémentez la forme {@Override public void Draw () {System.out.println ("Shape: Circle"); }}Étape 3
Créez une classe décorative abstraite qui implémente l'interface de forme.
ShapeDecorator.java
La classe abstraite de la classe ShapeDeCorator implémente la forme {forme protégée de forme décorée; Public ShapeDeCorator (Forme DecoratedShape) {this.DeccoRedShape = DecoratedShape; } public void draw () {décoréShape.Draw (); }}Étape 4
Crée une classe décorative d'entité qui s'étend de la classe ShapeDeCorator.
RedShapeDecorator.java
classe publique RedShapeDeCorator étend ShapeDeCorator {public RedShapedeCorator (forme de décoration) {super (DecoratedShape); } @Override public void draw () {décoréShape.Draw (); SetRedBorder (DecoratedShape); } private void setRedBorder (forme décoratedShape) {System.out.println ("Couleur de bordure: rouge"); }}Étape 5
Utilisez RedShapeDecorator pour décorer les objets de forme.
Décorateurpatterndemo.java
classe publique DecoratorPatterndemo {public static void main (String [] args) {Shape Circle = new Circle (); Forme redriccle = nouveau RedShapeDecorator (new Circle ()); Forme Redrectangle = nouveau RedShapeDeCorator (new rectangle ()); System.out.println ("cercle avec bordure normale"); Circle.Draw (); System.out.println ("/ nCircle of Red Border"); redcircle.draw (); System.out.println ("/ nrectangle de la frontière rouge"); redectangle.draw (); }}Étape 6
Vérifiez la sortie.
Couper avec des bordures normales: circleCircle de la frontière rouge: Circlebanter Couleur: Redrectangle of Red Bordershape: Rectangleborder Couleur: Rouge
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!