


Explication détaillée du modèle de décorateur de modèles de conception Java et exemples de code
Le motif décorateur peut ajouter dynamiquement des fonctionnalités aux objets existants. Ci-dessous, j'utiliserai un exemple simple pour montrer comment utiliser le modèle décorateur dans un programme.
1. Modèle de décorateur
Supposons que vous recherchez une petite amie. Il existe de nombreuses filles de différents pays, comme les États-Unis, la Chine, le Japon, la France, etc. Chacune d'elles a des personnalités et des intérêts différents. Si vous devez simuler une telle situation dans le programme, supposez que chaque fille est pour un. Classe Java, il y aura des milliers de classes, ce qui entraînera l'expansion des classes, et l'évolutivité d'une telle conception sera relativement faible. Parce que si nous avons besoin d'une nouvelle fille, nous devons créer une nouvelle classe Java, ce qui viole en fait le principe OCP (ouvert pour extension, fermé pour modification) qui doit être suivi dans le développement de programmes.
Créons un autre design pour que chaque personnalité ou passe-temps devienne une décoration qui peut être ajoutée dynamiquement au corps de chaque fille.
2. Structure du diagramme de classes
3. Exemple de code de modèle de décorateur
Girl.java
public abstract class Girl { String description = "no particular"; public String getDescription(){ return description; } }
AmericanGirl.java
public class AmericanGirl extends Girl { public AmericanGirl() { description = "+American"; } }
EuropeanGirl.java
public class EuropeanGirl extends Girl { public EuropeanGirl(){ description = "+European"; } }
GirlDecorator.java
public abstract class GirlDecorator extends Girl { public abstract String getDescription(); }
Science.java
public class Science extends GirlDecorator { private Girl girl; public Science(Girl girl){ this.girl = girl; } @Override public String getDescription() { return this.girl.getDescription() + "+Like Science"; } public void caltulateStuff() { System.out.println("scientific calculation!"); } }
Art . java
public class Art extends GirlDecorator { private Girl girl; public Art(Girl girl){ this.girl = girl; } @Override public String getDescription() { return this.girl.getDescription() + "+Like Art"; } public void draw() { System.out.println("draw pictures!"); } }
Main.java
public class Main { public static void main(String[] args) { //普通美国女孩 Girl g1 = new AmericanGirl(); System.out.println(g1.getDescription()); //喜欢科学的 Science g2 = new Science(g1); System.out.println(g2.getDescription()); //喜欢艺术的 Art g3 = new Art(g2); System.out.println(g3.getDescription()); } }
4. L'application du modèle décorateur dans JDK
L'IO en Java utilise le modèle décorateur. .
Ce qui suit est un exemple simple de décoration d'un objet InputStreamReader via un objet BufferedReader :
BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); //System.in is an InputStream object
Pour des explications plus détaillées des modèles de conception Java et des exemples de code du modèle de décorateur, veuillez prêter attention vers le site PHP chinois !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Lorsque vous utilisez TkMyBatis pour les requêtes de base de données, comment obtenir gracieusement les noms de variables de classe d'entité pour créer des conditions de requête est un problème courant. Cet article épinglera ...

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Explication détaillée de la conception des tables SKU et SPU sur les plates-formes de commerce électronique Cet article discutera des problèmes de conception de la base de données de SKU et SPU dans les plateformes de commerce électronique, en particulier comment gérer les ventes définies par l'utilisateur ...
