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.
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.
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.
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.
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.
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; } }
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; } }
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("原地成仙"); } }
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("意念化神"); } }
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(); } }
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()); } }
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!