Maison  >  Article  >  Java  >  Résumer et organiser les modèles de décorateur JAVA (exemples détaillés)

Résumer et organiser les modèles de décorateur JAVA (exemples détaillés)

WBOY
WBOYavant
2022-05-05 18:48:192405parcourir

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.

Résumer et organiser les modèles de décorateur JAVA (exemples détaillés)

Apprentissage recommandé : "Tutoriel vidéo Java"

Qu'est-ce que le motif décorateur ?

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.

Avantages

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

Inconvénients

Le mode décorateur ajoutera de nombreuses sous-classes et une utilisation excessive augmentera la complexité du programme.

Points de connaissance

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.

Mise en œuvre du modèle de décorateur

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.

Qixia

L'interface Qixia déclare une méthode abstraite de barbecue

public interface Qi {
    void show();}

Hongmao

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("烧烤一个虹猫");
    }}

Ajouter des ingrédients

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();

    }}

ajouter du sel

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("加盐");
    }}

Ajouter du cumin

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("加孜然");
    }}

Test

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();
    }}

Résumer et organiser les modèles de décorateur JAVA (exemples détaillés)

Résumé

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer