Le mode créateur de Java est quelque peu similaire au mode usine, mais l'objectif est différent. Le modèle d’usine ne se soucie souvent que de ce que vous voulez, mais pas des détails spécifiques de cette chose. Relativement parlant, le mode création concerne les détails spécifiques de la création de cette chose. Prenons l'exemple de la création d'un personnage. Nous nous soucions non seulement de la création d'un personnage, mais également de son sexe, de sa couleur de peau et de son nom. Nous pouvons ensuite utiliser le mode créateur.
L'exemple de programme est le suivant :
générateur de paquets;/** * * Rôle de race DOC* */classe publique Race { nom de chaîne privé;// nom chaîne privée skinColor;// couleur de peau chaîne privée sexe;// genre public String getName() { return this.name ; } public void setName(String name) { this.name = name; } public String getSkinColor() { return this.skinColor } public void setSkinColor(String skinColor) { this.skinColor = skinColor; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; }}générateur de paquets ;/** * * DOC Ce qui nous intéresse n'est pas juste Pour créer un personnage, vous devez également vous soucier de la création de ses caractéristiques* */public class RaceBuilder { private Race race; /** * DOC Créer une course* * @return */ public RaceBuilder builder() { this. course = nouveau Race(); renvoie ceci ; } /** * DOC pour sélectionner un nom* * @return */ public RaceBuilder setName(String name) { this.race.setName(name); sélectionnez un sexe* * @return */ public RaceBuilder setSex(String sex) { this.race.setSex(sex); return this } /** * DOC sélectionnez la couleur de la peau* * @return */ public RaceBuilder setSkinColor(String skinColor) { this.race.setSkinColor(skinColor); return this } /** * * DOC Renvoie cette course créée* * @return */ public Race create() { return this.race }}
Les classes de tests sont les suivantes :
package builder;public class Main { public static void main(String[] args) { Race race = new RaceBuilder().builder().setName("Zhang San").setSex("Male").setSkinColor("White" ).créer(); }}