Nota: Debido al proyecto fuente de la empresa implica la confidencialidad, cargados personal una demo para su consulta y estudio.
Dirección de origen: https://gitee.com/Leelinkai/demo
1. Resumen del proyecto
Nombre del proyecto: Sistema de comerciante de presentación
Descripción del Proyecto: una variedad de productos para satisfacer las empresas ( micro-canales , Alipay , CUP ) , tales como la función de archivo, es decir, cada empresas de soporte de producto para crear , modificar y consulta de funciones.
2, la forma de hacer la programación con los patrones de diseño
2.1 Resumen de fábrica
Primero leemos la descripción del artículo, podemos ver que el apoyo de micro-canales para crear, modificar y consulta, Alipay empatía. En este punto se puede pensar en hacer algo como paquete. Pero también tenemos que pensar en qué tipo de patrones de diseño para su uso con el proyecto real. También me centro en la marca y otras palabras, y también productos de comunicados, habrá un seguimiento de unirse a la QQ y otros productos. Aquí, sin duda estamos buscando para crear un patrón de diseño, por lo que el patrón de fábrica abstracta surgió.
Dado que la decisión de utilizar el patrón de fábrica abstracta, sino el marco para la forma de diseñar nuestra interfaz para catalogarlo? En primer lugar quiero introducir dos conceptos: la familia de productos y jerarquía de productos .
- Familia de productos: se refiere a la producción de la misma planta, ubicada en diferentes productos estructura jerárquica de un grupo de productos
- jerarquía de productos: estructura de herencia del producto.
Se puede esperar en la figura, un productos y productos de micro-canal son de micro-canales para crear, modificar y micro-canal consultas micro-canal, jerarquía de productos para una consulta son consulta de micro-canales, la consulta Alipay, CUP consulta. Así familia de productos eje Y esta línea es una fábrica de cemento que proporciona funcionalidad para crear, modificar y consulta. El eje X es el producto específico, respectivamente, para apoyar micro-canal, Alipay y UnionPay. Del análisis anterior, podemos sacar unas preliminares diagramas UML.
UML en el gráfico anterior, podemos ver que el marco básico para el diseño inicial del programa. Es parte del código.
CreateMerchant interfaz pública {
createMch public void ();
}clase pública implementa AlipayCreateMerchant CreateMerchant {
@ Override
pública createMch void () {
System.out.println ( "negocio Alipay ha sido creado");
}
}
public class UnipayCreateMerchant implementos CreateMerchant {
@ Override
pública createMch void () {
System.out.println ( "CUP empresas fueron creadas");}
}clase pública implementa WeiXinCreateMerchant CreateMerchant {
@ Override
pública createMch void () {
System.out.println ( "micro-canales ha sido creado comerciante");
}
}interfaz pública ModifyMerchant {
modifyMch public void ();
}clase pública implementa AlipayModifyMerchant ModifyMerchant {
@ Override
pública modifyMch void () {
System.out.println ( "negocio Alipay se ha modificado");
}
}public class UnipayModifyMerchant implementos ModifyMerchant {
@ Override
pública modifyMch void () {
System.out.println ( "CUP se modificaron comerciante");}
}public class WeiXinModifyMerchant implementos ModifyMerchant {
@ Override
pública modifyMch void () {
System.out.println ( "micro-cartas fueron modificados comerciante");}
}interfaz pública FilingFactory {
público CreateMerchant createMerchant ();
pública ModifyMerchant modifyMerchant ();
pública QueryMerchant queryMerchant ();
}
clase pública implementa AlipayFilingFactory FilingFactory {
@ Override
pública CreateMerchant createMerchant () {
return new AlipayCreateMerchant ();
}@ Override
pública ModifyMerchant modifyMerchant () {
return new AlipayModifyMerchant ();
}@ Override
pública QueryMerchant queryMerchant () {
return new AlipayQueryMerchant ();
}}
public class UnipayFilingFactory implementos FilingFactory {
@ Override
pública CreateMerchant createMerchant () {
return new UnipayCreateMerchant ();
}@ Override
pública ModifyMerchant modifyMerchant () {
return new UnipayModifyMerchant ();
}@ Override
pública QueryMerchant queryMerchant () {
return new UnipayQueryMerchant ();
}}
El código no se pega muy completo. Pero la idea básica del código está en. Supongamos que desea agregar una presentación de producto QQ, no es simplemente crear un QQFlingFactory lograr FilingFactory fábrica de hormigón presentación puede ser.
modo de adaptador 2.2
Antecedentes: Se requiere que el sistema para proporcionar una interfaz externa al sistema interno, que funciona en una solicitud de aguas arriba. Pero el proceso de avance del proyecto, el plan mismo heredará solicitar otros proyectos de exploración copian esta pieza, porque ese proyecto sólo es responsable de las transacciones relacionadas con el proyecto es responsable de presentar comerciante, llevar a cabo sus funciones. Pero la dificultad de conseguir un certificado comercial coherente y constancia de presentación, si la causa emigraron, lo que significa que los mismos dos conjuntos de certificados necesita para mantener ambos lados. Con el fin de no cambiar el lado diseñada estructura de código razonable, patrones de diseño decidieron adaptador modo.
RequestChannel interfaz pública {
reqChannelCreate public void ();reqChannelModify public void ();
reqChannelQuery public void ();
}implementos RequestChannelAdapter public class {RequestChannel
privada OtherItemRequestChannel otherItemRequestChannel; // interfaz para otros proyectos
@ Override
reqChannelCreate public void () {
System.out.println ( "Se trata de una solicitud de creación de un grupo de canales de lógica de negocios");
otherItemRequestChannel.reqChannelCreate ();
}
@Override
public void reqChannelModify ( ) {
}
@ Override
reqChannelQuery public void () {
}}
clase pública implementa AlipayCreateMerchant CreateMerchant {
@ Override
pública createMch void () {
System.out.println ( "negocio Alipay ha sido creado");
RequestChannel RequestChannel = new nueva RequestChannelAdapter ();
RequestChannel.reqChannelCreate ();
}
}
2.3 modelo prototipo
el modo y el modo de prototipo Mingke largo, que tiene como objetivo crear una propiedad como un objeto copiando a cabo, en lugar de cada vez para crear una instancia. JVM modelo prototipo puede reducir los gastos y mejorar el rendimiento.
Antecedentes: Existe operación de lectura tabla de datos de mayor importación, fila de la tabla todos los campos son un objetivo. Por lo tanto el uso de estas razones el modelo de objetos se pueden encapsular. Tenga en cuenta que el modelo de prototipo se divide en oro clon clon superficial y profunda. Casi todo el mundo puede utilizar por su cuenta para consultar, no para elaborar aquí.
clase de los comerciantes los implementos de la Cloneable {public
nombre privada Cadena;
dirección cadena privada;
public String getName () {
nombre de retorno;
}
public void del setName (String nombre) {
this.name = nombre;
}
Cadena GetAddress pública () {
dirección de retorno;
}
pública la setAddress void (dirección String) {
this.address = dirección;
}
// métodos Java nota contemplada en el presente documento, cuando se crea un objeto nuevo, este clon solamente ajustando método, en lugar de instanciar un objeto nuevo
clon de Merchant público () {
Object Object = null;
el try {
objeto para super.clone = ();
retorno (Comerciante) objeto;
} catch (CloneNotSupportedException e) {
return null;
}
}
}
Estos son los factores que consideran este sistemas de archivo y el modelo de diseño utilizado, hay muchos tipos de patrones de diseño, tenemos que seguir aprendiendo a acumular, a mejor aplicarla a su proyecto, hacer el proyecto más estandarizada y fácil de mantener .