El modo creador de Java es algo similar al modo fábrica, pero el enfoque es diferente. El patrón de fábrica a menudo solo se preocupa por lo que usted quiere, pero no por los detalles específicos de esto. Relativamente hablando, el modo de creación se ocupa de los detalles específicos de la creación de esta cosa. Tomemos como ejemplo la creación de un personaje. No solo nos preocupamos por crear un personaje, sino también por su género, color de piel y nombre. Luego podemos usar el modo creador.
El ejemplo del programa es el siguiente:
generador de paquetes;/** * * rol de carrera DOC* */public class Race { private String name;// nombre private String skinColor;// color de piel private String sex;// género public String getName() { return this.name } public void setName(String nombre) { this.name = nombre } 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 }}generador de paquetes;/** * * DOC Lo que nos importa no es solo para crear un personaje, también debes preocuparte por la creación de sus características* */public class RaceBuilder { private Race race /** * DOC Crea una carrera* * @return */ public RaceBuilder builder() { this. raza = nueva Race(); devolver esto; } /** * DOC para seleccionar un nombre* * @return */ public RaceBuilder setName(String nombre) { this.race.setName(nombre); devolver esto; seleccione un género* * @return */ public RaceBuilder setSex(String sex) { this.race.setSex(sex) return this } /** * DOC seleccione color de piel* * @return */ public RaceBuilder; setSkinColor(String skinColor) { this.race.setSkinColor(skinColor); return this } /** * * DOC Devuelve esta carrera creada* * @return */ public Race create() { return this.race }}
Las clases de prueba son las siguientes:
generador de paquetes;clase pública Principal { public static void main(String[] args) { Carrera carrera = new RaceBuilder().builder().setName("Zhang San").setSex("Hombre").setSkinColor("Blanco" ).crear(); }}