O modo criador do Java é um pouco semelhante ao modo fábrica, mas o foco é diferente. O padrão de fábrica muitas vezes só se preocupa com o que você quer, mas não com os detalhes específicos dessa coisa. Relativamente falando, o modo de criação preocupa-se com os detalhes específicos da criação desta coisa. Tomemos como exemplo a criação de um personagem. Nós nos preocupamos não apenas com a criação de um personagem, mas também com seu gênero, cor de pele e nome.
O exemplo do programa é o seguinte:
package builder;/** * * DOC race role* */public class Race { private String name;// name private String skinColor;// cor da pele private String sex;// gênero public String getName() { return this.name ; } public void setName (String nome) { this.name = nome } 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 }}package builder;/** * * DOC O que nos importa não é apenas Para criar um personagem, você também precisa se preocupar com a criação de suas características* */public class RaceBuilder { private Race race; /** * DOC Criar uma corrida* * @return */ public RaceBuilder builder() { this. raça = novo Race(); return this } /** * DOC para selecionar um nome* * @return */ public RaceBuilder setName(String name) { this.race.setName(name); selecione um gênero* * @return */ public RaceBuilder setSex(String sex) { this.race.setSex(sex); return this } /** * DOC selecione a cor da pele* * @return */ public RaceBuilder; setSkinColor(String skinColor) { this.race.setSkinColor(skinColor); return this } /** * * DOC Retorna esta corrida criada* * @return */ public Race create() { return this.race }}
As classes de teste são as seguintes:
construtor de pacotes;classe pública Main { public static void main(String[] args) { Race race = new RaceBuilder().builder().setName("Zhang San").setSex("Masculino").setSkinColor("Branco" ).criar(); }}