Este artículo describe el uso del modo Builder para implementar la función de solicitar paquetes de teléfonos móviles. Compártelo para su referencia, como sigue:
1. Definición de patrones
El constructor simplemente lo entiende para construir cosas, pero el modelo de constructor no es algo simple, sino algo relativamente complejo.
2. Ejemplos del modelo
1 análisis de patrones
Tomamos prestado un ejemplo de un cliente que vaya al paquete de teléfonos móviles para solicitar un paquete de teléfonos móviles para ilustrar este modelo después del análisis abstracto, obtenemos la siguiente información sobre el cliente Zhang San, el operador de negocios de la demanda terminal, el instructor (notificando al constructor qué tipo de paquete de teléfonos móviles producir)
Computadora - Builder (crea varios paquetes de teléfonos móviles)
Paquete de teléfonos móviles - Producto
2 modelado estático en modo constructor
3 ejemplos de código
3.1 Crear un producto - Paquete de teléfonos móviles
paquete com.demo.buider.model; public class MobilePackage {// Bill Phone Bill Float Money; // sms private int shortinfo; // Cailing Música de cadenas privadas; public float getMoney () {return dinero; } public void setMoney (dinero float) {this.money = dinero; } public int getShortinfo () {return shortInfo; } public void setShortinfo (int shortinfo) {this.shortinfo = shortinfo; } public String getMusic () {return Music; } public void setmusic (String Music) {this.music = music; }}3.2 Interfaz del constructor
paquete com.demo.buider.itf; import com.demo.buider.model.mobilepackage;/** * Builder de paquetes móviles * * @author * */interfaz pública iMobileBuilder {// Tarifa de teléfono para construir paquete móvil Public void buildMoney (); // sms para construir paquete móvil public void buildShortinfo (); // Cailing Public Void BuildMusic (); // Vuelve al objeto de paquete móvil construido público MobilePackage getMobilePackage ();}3.3 Establecer un constructor específico
Constructor específico 1
paquete com.demo.buider.itf; import com.demo.buider.base.abstractbasepackage; import com.demo.buider.model.mobilepackage;/** * paquete 1 * * @author maofw * */public mobileBuilderIml1 Extiende abstractbasePackage Implements Imobilebuilder {// buildMoney () {this.mobilepackage.setMoney (20.0f); } // Cailing public void buildMusic () {this.mobilepackage.setMusic ("ángel"); } // sms para construir paquete móvil public void buildShortinfo () {this.mobilepackage.setShortinfo (400); } // Regrese al objeto de paquete móvil construido public MobilePackage getMobilePackage () {return this.mobilePackage; }}Builder específico 2
paquete com.demo.buider.itf; import com.demo.buider.base.abstractbasepackage; import com.demo.buider.model.mobilepackage;/** * paquete 2 * * @author maofw * */public mobileBuilderImpl2 Extiende abstractbasePackage Implements ImobileBuilder {// buildMoney () {this.mobilepackage.setMoney (30.0f); } // Cailing public void buildMusic () {this.mobilepackage.setMusic ("mar"); } // sms para construir paquete móvil public void buildshortinfo () {this.mobilepackage.setShortinfo (600); } // Regrese al objeto de paquete móvil construido public MobilePackage getMobilePackage () {return this.mobilePackage; }}3.4 Creación de un mentor
paquete com.demo.buider.director; import com.demo.buider.itf.imobileBuilder; import com.demo.buider.model.mobilepackage;/** * Instructor de paquete móvil * * @author maofw * */public class mobiledirector {public public CreateMobagege (imobilebileBuildererilderilleaLerilder) (MobileBuilder! = NULL) {// Bill Phone Bill MobileBuilder.BuildMoney (); // construir mensajes de texto mobileBuilder.BuildShortInfo (); // construir Cailing MobileBuilder.BuildMusic (); // volver al paquete móvil return mobileBuilder.getMobilePackage (); } return null; }}Deje que los clientes soliciten paquetes de teléfonos móviles
paquete com.demo.buider; import com.demo.buider.director.mobiledirector; import com.demo.buider.itf.mobileBuilderImpl1; import com.demo.buider.itf.mobileBuilderIm2; import Com.demo.buider.model.mobilepackage; public ClassApp {** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** @param args */ public static void main (string [] args) {// crea un mentor mobiledirector mobiledirector = new Mobiledirector (); // Plan 1 MobileBuilderImpl1 MobileBuilderImpl1 = new MobileBuilderImpl1 (); // Plan 2 MobileBuilderImpl2 MobileBuilderImpl2 = new MobileBuilderImpl2 (); printMessage (mobiledirector.createMobilepackage (mobileBuilderImpl1)); printMessage (mobiledirector.createMobilepackage (mobileBuilderImpl2)); }/*** Información del paquete impreso*/public static void printMessage (mobilePackage mobilePackage) {System.out.println ("-Telcoding:" + mobilePackage.getMoney () + "/t sms:" + mobilePackage.getShortfo () + "twitter/t cailing:" + mobilePackage.getMusic ();); }}Resultados de ejecución
--Tel: 20.0 SMS: 400 Cailing: Angel
--Tel: 30.0 SMS: 600 Cailing: Dahai
3. El principio de configurar el modelo
1 paso para crear objetos complejos
2. Construir y representar la separación
3 Principio de responsabilidad única
4. Use ocasiones
1 Cuando el objeto del producto tiene una estructura compleja dentro de él
2 Cuando los objetos complejos deben separarse de la representación, pueden necesitar crear diferentes representaciones
3 Cuando es necesario ocultar el rendimiento estructural del producto de los clientes
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.