El mejor tutorial de Model Builder en 2024. En este tutorial podrás aprender introducción,realización,
Modo Constructor (Builder) usando una pluralidad de objetos simples para construir paso a paso en un objeto complejo. Este tipo de patrones de diseño pertenecen crear esquema, que proporciona la mejor manera de crear objetos.
El generador de clase es un paso a paso para construir el objeto final. La clase Builder es independiente de los otros objetos.
Propósito: un complejo de construir su separación representación, por lo que el mismo proceso de construcción puede crear diferentes representaciones.
Principalmente para resolver: la solución principal en el sistema de software, a veces frente a "un objeto complejo" para crear trabajo, que es por lo general un cierto algoritmo consiste en varias partes de la sub-objeto; debido a cambios en la demanda, las diversas partes de este tema complejo a menudo la cara un cambio drástico, sino que combinará algoritmo es relativamente estable.
Cuándo utilizar: no va a cambiar algunos de los componentes básicos, y combinaciones de los mismos constantemente nuevos tiempos.
Cómo corregir: el cambiado y sin cambios separados.
El código de la llave: Constructor: Crear y dar ejemplos, Director: gestión de la dependencia construida instancia.
Ejemplos de aplicación: 1, ir a KFC, hamburguesas, refrescos de cola, patatas fritas, alas de pollo frito, etc. es constante, y su composición está cambiando constantemente, lo que genera un denominado "paquete".2, JAVA en StringBuilder.
Ventajas: 1, un constructor independiente, fácil de ampliar.2, fácil de controlar los detalles de riesgo.
Desventajas: 1, el producto ha de tener en común, la gama es limitada.2. Los complejos cambios internos, habrá una gran cantidad de clases de construcción.
Escenarios de uso: 1, lo que necesita para generar el objeto tiene una estructura interna compleja.2, necesita ser generado en el interior del propio inmueble objeto interdependientes.
Nota: La diferencia entre el modelo de la planta es: un generador de modelos está más preocupado por el orden de montaje de las piezas.
Suponemos que un caso de negocio de los restaurantes de comida rápida, en la que un paquete puede ser una hamburguesa típica (hamburguesa) y una copa de (bebida fría) frío. Burger (hamburguesa) puede ser hamburguesas vegetales Veg (hamburguesa) o hamburguesas de pollo (pollo hamburguesa), que están envueltos en la bandeja de papel. Fría (bebida fría) puede ser una Coca-Cola (coque) o Pepsi (Pepsi), que se envasan en botellas.
Vamos a crear una representación de los alimentos (tales como hamburguesas y frío) de interfaz depuntoylainterfaz de la aplicación entidad clasede artículos,y una entidad de interfaz e implementación representa alimentos interfaz deembalajede envasesde embalaje,Hamburgo es el paquete en la bandeja de papel está fría envasados en botellas.
Entonces se crea unaclaseArrayListcomida,y unacomidapara crear diferentes tipos de objetos a través de una combinación deMealBuilder elementoconelartículo.BuilderPatternDemo,que demuestran el uso de la claseMealBuilderpara crear unacomida.
Crea un interfaz de entrada de alimentos y envases de alimentos.
Item.java
interfaz pública de artículos { Nombre public String (); embalaje pública Embalaje (); precio de flotación pública (); }
Packing.java
interfaz pública de embalaje { paquete public String (); }
Embalaje crear clases de entidad implementan la interfaz.
Wrapper.java
implementos de embalaje contenedor de clase pública { @ Override paquete public String () { volver "envoltura"; } }
Bottle.java
implementos Botella clase pública {embalaje @ Override paquete public String () { volver "botella"; } }
Crear una interfaz de clase de artículos resumen, la clase proporciona una función predeterminada.
Burger.java
Hamburguesa pública clase abstracta implementa artículo { @ Override Embalaje embalaje pública () { volver nueva envoltura (); } @ Override precio flotador abstracto pública (); }
ColdDrink.java
clase abstracta implementa pública ColdDrink artículo { @ Override Embalaje embalaje pública () { volver nueva botella (); } @ Override precio flotador abstracto pública (); }
La creación de una extensión de la hamburguesa y las clases de entidad ColdDrink.
VegBurger.java
clase pública se extiende VegBurger hamburguesa { @ Override precio de flotación pública () { volver 25.0f; } @ Override Nombre public String () { volver "Veg hamburguesa"; } }
ChickenBurger.java
clase pública se extiende Chickenburger hamburguesa { @ Override precio de flotación pública () { volver 50.5f; } @ Override Nombre public String () { volver "Hamburguesa de Pollo"; } }
Coke.java
public class Coca-Cola se extiende ColdDrink { @ Override precio de flotación pública () { volver 30.0f; } @ Override Nombre public String () { volver "Coca-Cola"; } }
Pepsi.java
clase pública se extiende Pepsi ColdDrink { @ Override precio de flotación pública () { volver 35.0f; } @ Override Nombre public String () { volver "Pepsi"; } }
Crear una clase de comidas, con el objeto de artículo definido anteriormente.
Meal.java
java.util.ArrayList importación; java.util.List importación; Comida public class { Lista privada <Elemento> artículos = new ArrayList <Elemento> (); public void addItem (artículo) { Items.Add (punto); } getCost flotación pública () { costo de flotación = 0.0f; para (artículo: artículos) { costo + = item.price (); } coste de vuelta; } showItems public void () { para (artículo: artículos) { System.out.print ( "artículo:" + item.name ()); System.out.print (. ", Embalaje:" + Item.packing () pack ()); System.out.println ( "Precio:" + item.price ()); } } }
MealBuilder crear una clase, el constructor real responsable de la creación de objeto de clase de comidas.
MealBuilder.java
MealBuilder public class { público de comidas prepareVegMeal () { comida comida comida = new (); meal.addItem (nueva VegBurger ()); meal.addItem (nueva Coca-Cola ()); harina de retorno; } público de comidas prepareNonVegMeal () { comida comida comida = new (); meal.addItem (nueva Chickenburger ()); meal.addItem (nueva Pepsi ()); harina de retorno; } }
BuiderPatternDemo utilizar MealBuider para demostrar el modo de constructor (Builder).
BuilderPatternDemo.java
public class {BuilderPatternDemo principales argumentos (String []) {public static void MealBuilder mealBuilder = new MealBuilder (); Comida vegMeal = mealBuilder.prepareVegMeal (); System.out.println ( "Veg comidas"); vegMeal.showItems (); System.out.println ( "Coste total:" + vegMeal.getCost ()); Comida nonVegMeal = mealBuilder.prepareNonVegMeal (); System.out.println ( "\ n \ nNon-Veg comidas"); nonVegMeal.showItems (); System.out.println ( "Coste total:" + nonVegMeal.getCost ()); } }
Verifique la salida.
veg comidas Artículo: Veg hamburguesa, Embalaje: Envoltura, Precio: 25.0 Artículo: Coca-Cola, Embalaje: Botella, Precio: 30.0 Costo total: 55,0 No vegetariano comida Artículo: Hamburguesa de Pollo, Embalaje: Envoltura, Precio: 50.5 Artículo: Pepsi, Embalaje: Botella, Precio: 35.0 Costo total: 85,5