Maison > Java > javaDidacticiel > Analyser le cas du modèle de constructeur en Java

Analyser le cas du modèle de constructeur en Java

王林
Libérer: 2023-05-10 10:40:15
avant
1455 Les gens l'ont consulté

Qu'est-ce que le modèle Builder

La définition du modèle Builder : fait référence à la séparation de la construction d'un objet complexe de sa représentation, afin que le même processus de construction puisse créer différentes représentations. appelé le modèle de constructeur. Il décompose un objet complexe en plusieurs objets simples puis le construit étape par étape. Il sépare le changement de l'immuabilité, c'est-à-dire que les composants du produit restent inchangés, mais chaque partie peut être sélectionnée de manière flexible.

Avantages

1. Bonne encapsulation, séparation de construction et de présentation.

2. Il a une bonne évolutivité et chaque constructeur spécifique est indépendant les uns des autres, ce qui est propice au découplage du système.

3. Le client n'a pas besoin de connaître les détails de la composition interne du produit. Le constructeur peut affiner progressivement le processus de création sans aucun impact sur les autres modules, facilitant ainsi le contrôle des risques détaillés.

Inconvénients

1. Les composants du produit doivent être les mêmes, ce qui limite son champ d'utilisation.

2. Si les modifications internes du produit sont compliquées, si des modifications internes du produit surviennent, le constructeur devra également faire des modifications simultanées, ce qui entraînera des coûts de maintenance plus élevés dans le futur.

point de connaissance

Le mode constructeur et le mode usine ont des objectifs différents : le mode constructeur se concentre sur le processus d'assemblage des pièces, tandis que le mode méthode usine accorde plus d'attention au processus de création de pièces, mais les deux peuvent être combinés.

Implémentation du mode Builder

Cas : Miracle Doctor Doudou Alchemy

Rôle du produit (Produit) : Pilule

Abstract Builder : Résumé Danfang

Concrete Builder : Concrete Danfang

Directeur : Miracle Doctor Doudou

神medic Doudou affine l'élixir à neuf tours et la magie Taixu élixir

Remarque : pour éviter les ennuis, le contenu de l'élixir mentionné ici ne contient que le nom et l'effet de l'élixir, et il n'y a aucun matériel ou autre.

Elixir

La classe élixir déclare deux attributs : le nom et l'effet de l'alchimie

public class Dan {
    /* cailiao 丹药的名称
           danhuo 丹药的效果*/
    private String name;
    private String xiaoguo;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getXiaoguo() {
        return xiaoguo;
    }

    public void setXiaoguo(String xiaoguo) {
        this.xiaoguo = xiaoguo;
    }
}
Copier après la connexion

Élixir abstrait

La classe abstraite, nouvelle objet élixir, déclare deux méthodes abstraites pour nommer l'élixir et attribuer des effets d'élixir, ainsi qu'une méthode pour générer des élixirs.

//抽象丹方
abstract class DanFang {
    Dan dan = new Dan();

    public abstract void name();

    public abstract void xiaoguo();

    public Dan getDan() {
        return dan;
    }

}
Copier après la connexion

九 Turn Elixir Danfang

La classe Danfang spécifique hérite de la classe Danfang et implémente deux méthodes abstraites.

//九转仙丹丹方
public class JiuZhuan extends DanFang {

    @Override
    public void name() {
        dan.setName("九转仙丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("原地成仙");
    }
}
Copier après la connexion

Taixuhuashendanfang

La classe Danfang spécifique hérite de la classe Danfang et implémente deux méthodes abstraites.

//太虚化神丹丹方
public class Taixu extends DanFang {
    @Override
    public void name() {
        dan.setName("太虚化神丹");
    }

    @Override
    public void xiaoguo() {
        dan.setXiaoguo("意念化神");
    }
}
Copier après la connexion

神药豆豆

Déclarez un attribut d'élixir, une méthode constructeur avec paramètres et une méthode d'alchimie.

public class DouDou {
    private final DanFang danLu;

    public DouDou(DanFang danLu) {
        this.danLu = danLu;
    }

    //炼丹方法
    public Dan lian() {
        //放入材料
        danLu.name();
        //释放丹火
        danLu.xiaoguo();
        //成丹
        return danLu.getDan();
    }
}
Copier après la connexion

test

Affinage de deux pilules.

public class Demo {
    public static void main(String[] args) {
        //炼制九转仙丹
        //new一个九转仙丹的丹方
        DanFang jiu = new JiuZhuan();
        //把丹方给豆豆
        DouDou dou = new DouDou(jiu);
        //炼丹生成丹药
        Dan dan = dou.lian();
        System.out.printf("丹药名称:%s   丹药效果:%s", dan.getName(), dan.getXiaoguo());


        System.out.println();

        //炼制太虚化神丹
        //new一个九转仙丹的丹方
        DanFang tai = new Taixu();
        //把丹方给豆豆
        DouDou dous = new DouDou(tai);
        //炼丹生成丹药
        Dan dans = dous.lian();
        System.out.printf("丹药名称:%s   丹药效果:%s", dans.getName(), dans.getXiaoguo());
    }
}
Copier après la connexion

Analyser le cas du modèle de constructeur en 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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal