patrón de diseño Abstract Factory, adapter, modelo de prototipo implementado en proyectos prácticos

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 .

Publicado tres artículos originales · ganado elogios 0 · Vistas 67

Supongo que te gusta

Origin blog.csdn.net/taipoucha5799/article/details/105028632
Recomendado
Clasificación