Tres implementaciones de patrones de fábrica, es así de simple!

patrón de la fábrica

patrón de la fábrica es de uso común en el desarrollo de un patrón de diseño para resolver el problema de la gran programación todos los aspectos de un patrón de diseño será, patrón de fábrica es el mismo, utilizará un lenguaje sencillo para explicar lo que es un patrón de la fábrica? Tipo de modelo de fábrica, ejemplos de código, y las ventajas y desventajas de cada modo de escena es el modo de fábrica planta adecuada.

¿Por qué, si se utiliza el patrón de la fábrica?

En primer lugar, utilizamos una historia vívida para describir lo que está bajo el patrón de la fábrica, te hace más rápido la comprensión del modelo de fábrica, para sentar las bases para la posterior comprensión de varios aplicación patrón de la fábrica.

Si usted necesita para que la empresa para abrir una prueba de ingresos para proporcionar comprobante de ingresos de sus préstamos para la vivienda, el proceso de prueba generalmente abierto de ingreso son:

  1. Imprimir comprobantes de ingresos;
  2. capítulo cubierta de la compañía en la prueba de ingresos;

A lo largo del proceso, se puede saber que es necesario crear un comprobante de ingresos, comprobante de ingresos y utiliza la información para proporcionar préstamos para la vivienda. Este proceso, hay dos comportamientos clave: Crear prueba de ingresos, prueba del uso de ingresos. Prueba de ingresos en el proceso de creación se divide en dos etapas: la impresión, sello. Los colegas no están familiarizados con este proceso cuando se crea la prueba de ingresos, a menudo resulta en un montón de problemas para la prueba abierta de ingresos, a menudo bloqueados, por lo que la empresa decidió la prueba abierta de la misma los empleados de ingresos para ser optimizado, que sirve para dar dos pasos que hacer ahora Sólo es necesario enviar un mensaje al sector financiero, el sector financiero será capaz de mantener la cubierta del capítulo prueba de ingreso a la estación antes del viaje, que se encuentran en la vida 工厂模式.

Una vez dicho esto, 工厂模式exactamente cuáles son los problemas en la vida hacer?

En este caso la vida, que permite a los empleados para crear un comprobante de ingresos este asunto fácil, los empleados que necesita saber es cómo crear un comprobante de ingresos, sólo tiene que enviar un mensaje con el sector financiero, el sector financiero ayudará a los empleados cubierta de la impresión y capítulo. Y en el posterior desarrollo de la empresa, si necesita más cobertura en el Capítulo prueba de ingreso, el empleado no tiene que estar familiarizado con todo el proceso de tomar su propia, sosteniendo prueba de ingresos Boduantui a los distintos departamentos de sello.

Luego, en el mundo del programa, el código se muestra cómo utilizar el personal como un préstamo para comprar una casa, prueba de ingreso a la empresa para abrir este comportamiento? ¿Cómo es el código para mostrar el modelo de fábrica de la misma?

Analogía anterior ejemplo, si hay un 收入证明类crear sólo tiene que hacer clic en la nueva línea, los parámetros son 打印证明y 给证明盖章, si la prueba de seguimiento estampado de ingresos ha cambiado, es necesario modificar los parámetros. Esto requiere una gran cantidad de cambios llamada crea 收入证明类un nuevo código.

En este patrón puede entonces utilizar la fábrica, el modo de fábrica utilizará para crear y clases separadas de clases, clase A quiere llamar cuando la clase B, entonces A excepción de la llamada a B, B se instancia como para, a la planta clase.

Algunas personas dicen que, se puede poner éstos proceso de creación del código de constructor en la clase, la misma tasa de repetición se puede reducir, y también el papel del constructor para inicializar el objeto en sí. Para este punto de vista, podemos comparar el modo de fábrica en comparación con las ventajas del constructor:

ventajas:

  1. métodos de fábrica estáticas y constructores no tienen un nombre, ya que la planta puede tener varios métodos para distinguir los diversos métodos por su nombre, pero sólo un nombre constructor, sólo pueden ser distinguidos por los parámetros, utilizando un método de fábrica estática es más sencillo.

  2. método de fábrica estática para apoyar la creación de instancias condicional, que cuando se crea un objeto, a veces es necesario añadir algunas condiciones deben crearse para determinar si, si la condición vuelve un caso, no satisface los rendimientos NULL, tales como el patrón Singleton. No podemos hacer lo que cuando el constructor, la función constructora de la necesidad de mantener una sola, sólo para la construcción y presencia, mientras que el método de fábrica estática puede ser muy simple de hacer.

  3. El método puede volver subtipo tipo de retorno

Este es el patrón de la fábrica para crear algunas ventajas en el objeto, y el modelo de fábrica es el núcleo del conocimiento: la creación y el uso de objetos hacen separación. Por favor, meditación tres veces.

Aprovecha el punto central, ir a la fábrica para entender los diversos patrones de lograr algo más que un patrón simple fábrica en general se puede dividir en tres tipos:

  • Sencillo / patrón de la fábrica estática
  • Factory Method
  • Resumen patrón de fábrica

Aprendemos los pasos de: el patrón método de fábrica a un simple patrón de la fábrica estática a Abstract Factory, ejemplo muy simple, se puede entender, el texto del código que puso a los estudiantes interesados ​​en github pueden descargar:

github Dirección: patrones de diseño de ejemplo de código java23 - el modo de fábrica

Sé que somos todas las personas que cuidan, puta blanca, por supuesto, no es su hábito, la bienvenida a una ola de tres cualidades: la atención, pulgares para arriba, estrella punto

Factory Method

método de fábrica es relativamente simple y \ fábrica estática es relativamente simple y fácil de entender.

Si tenemos que construir un teléfono móvil en la fábrica, entonces la clase abstracta para definir un teléfono, el teléfono debe tener una llamada de función, agregue una llamada métodos abstractos

package com.shuai.design.factory.normals;

public abstract class Phone {

    // 所有的手机必须要有打电话的功能
    public abstract void call();

}

Creación de una interfaz de fábrica de teléfonos móviles, que tiene un método createPhone, otros tipos de teléfonos móviles deben heredar esta interfaz deben poner en práctica este método para crear un teléfono móvil

package com.shuai.design.factory.normals;

import com.shuai.design.factory.simples.Phone;

public interface PhoneFactory {

    Phone createPhone();
}

La creación de la categoría de teléfono mijo. La herencia de teléfono, llame al método para lograr

package com.shuai.design.factory.normals;

import com.shuai.design.factory.simples.Phone;

public class MiPhone extends Phone {

    @Override
    public void call() {
        System.out.println("this is MI call");
    }
}

La creación de mijo fábrica de teléfonos móviles

package com.shuai.design.factory.normals;

public class MiPhoneFactory implements PhoneFactory {

    @Override
    public MiPhone createPhone() {
        return new MiPhone();
    }
}

Del mismo modo mijo teléfono, teléfono celular Huawei para lograr clases, herencia PHOEN clase abstracta que implementa la llamada al método

package com.shuai.design.factory.normals;

import com.shuai.design.factory.simples.Phone;

public class HuaWeiPhone extends Phone {

    @Override
    public void call() {
        System.out.println("this is HuaWei Phone");
    }
}

teléfono celular Huawei para lograr la fábrica

package com.shuai.design.factory.normals;

public class HuaWeiPhoneFactory implements PhoneFactory{

    @Override
    public HuaWeiPhone createPhone() {
        return new HuaWeiPhone();
    }
}

patrón de la fábrica estática sencilla

Estática Factory Method respecto a la planta mucho más simple, crear primero un teléfono clase abstracta

package com.shuai.design.factory.simples;

public abstract class Phone {

    // 所有的手机必须要有打电话的功能
    public abstract void call();

}

La construcción de la fábrica y luego crear una clase de teléfono, la creación de diferentes tipos de teléfonos móviles en función del tipo de entrada

package com.shuai.design.factory.simples;

public class PhoneFactory {

    public static MiPhone createMiPhone() {
        return new MiPhone();
    }

    public static HuaWeiPhone createHuaWeiPhone() {
        return new HuaWeiPhone();
    }

    public static Phone createPhone(String type) {
        if ("Mi".equals(type)) {
            return new MiPhone();
        } else {
            return new HuaWeiPhone();
        }
    }
}

Realización de clase teléfono mijo

package com.shuai.design.factory.simples;

public class MiPhone extends Phone {

    @Override
    public void call() {
        System.out.println("this is MI call");
    }
}

teléfono celular Huawei para lograr la clase

package com.shuai.design.factory.simples;

public class HuaWeiPhone extends Phone {

    @Override
    public void call() {
        System.out.println("this is HuaWei Phone");
    }
}

Resumen patrón de fábrica

Definición: proporcionar una interfaz para la creación de un grupo de objetos relacionados o interdependientes, pero sin especificar sus clases concretas

En la foto:

Abstract Factory

Aquí es una forma de crear un teléfono móvil para lograr la fábrica abstracta, cree una clase abstracta de teléfono, que no sólo llama a los métodos, así como el tipo de pantalla del teléfono

package com.shuai.design.factory.abstracts;

public abstract class Phone {

    // 所有的手机必须要有打电话的功能
    public abstract void call();

    // 手机的屏幕类型
    public abstract void screenType();

}

A continuación, crear una interfaz telefónica para construir la planta madre

package com.shuai.design.factory.abstracts;

public interface PhoneFactory {

    Phone createMiPhone();

    Phone createHuaWeiPhone();

}

En primer lugar de todos los teléfonos móviles y teléfonos Huawei mijo debe implementar funciones de llamada, llamada método de reescritura

package com.shuai.design.factory.abstracts;


public abstract class MiPhone extends Phone {

    @Override
    public void call() {
        System.out.println("this is MI call");
    }

}

package com.shuai.design.factory.abstracts;


public abstract class HuaWeiPhone extends Phone {

    @Override
    public void call() {
        System.out.println("this is HuaWei Phone");
    }

}

En el mijo dividida teléfono de pantalla plegable basado en el tipo de pantalla del teléfono:

package com.shuai.design.factory.abstracts;

public class FoldingScreenMiPhone extends MiPhone {

    @Override
    public void screenType() {
        System.out.println("this is 小米折叠屏手机");
    }

}

En el teléfono Huawei pantalla plegable dividido en función del tipo de pantalla del teléfono:

package com.shuai.design.factory.abstracts;

public class FoldingScreenHuaWeiPhone extends HuaWeiPhone {

    @Override
    public void screenType() {
        System.out.println("this is 华为折叠屏手机");
    }

}

En el teléfono de pantalla dividida pantalla curvada mijo basa en el tipo de pantalla del teléfono:

package com.shuai.design.factory.abstracts;

public class CurvedScreenMiPhone extends MiPhone {

    @Override
    public void screenType() {
        System.out.println("this is 小米曲面屏手机");
    }
}

En la pantalla curva se divide en teléfono móvil de Huawei según el tipo de pantalla del teléfono:

package com.shuai.design.factory.abstracts;

public class CurvedScreenHuaWeiPhone extends HuaWeiPhone{

    @Override
    public void screenType(){
        System.out.println("this is 华为曲面屏手机");

    }

}

Para diferentes tipos de pantallas de teléfonos móviles, pantalla de tipo abstracto construido de acuerdo con la planta, la pantalla del teléfono célula de la planta y la pantalla de superficie curva plegable fábrica de teléfonos móviles:

package com.shuai.design.factory.abstracts;
//曲面屏手机工厂
public class CurvedScreenPhoneFactory implements PhoneFactory {

    @Override
    public CurvedScreenMiPhone createMiPhone() {
        return new CurvedScreenMiPhone();
    }

    @Override
    public CurvedScreenHuaWeiPhone createHuaWeiPhone() {
        return new CurvedScreenHuaWeiPhone();
    }
}

biombo fábrica de teléfonos móviles

package com.shuai.design.factory.abstracts;
//折叠屏手机工厂
public class FoldingScreenPhoneFactory implements PhoneFactory{

    @Override
    public FoldingScreenMiPhone createMiPhone() {
        return new FoldingScreenMiPhone();
    }

    @Override
    public FoldingScreenHuaWeiPhone createHuaWeiPhone() {
        return new FoldingScreenHuaWeiPhone();
    }

}

Ya se pueden escribir los resultados de pruebas clase de prueba:

package com.shuai.design.factory.abstracts;

public class Test {

    public static void main(String[] args) {

        // 创建一个华为曲面屏手机
        CurvedScreenHuaWeiPhone curvedScreenHuaWeiPhone = new CurvedScreenPhoneFactory().createHuaWeiPhone();
        System.out.println("curvedScreenHuaWeiPhone 的手机类型为:");
        curvedScreenHuaWeiPhone.screenType();

        // 创建一个小米曲面屏手机
        CurvedScreenMiPhone curvedScreenMiPhone = new CurvedScreenPhoneFactory().createMiPhone();
        System.out.println("curvedScreenMiPhone 的手机类型为:");
        curvedScreenMiPhone.screenType();

        // 创建一个华为折叠屏手机
        FoldingScreenHuaWeiPhone foldingScreenHuaWeiPhone = new FoldingScreenPhoneFactory().createHuaWeiPhone();
        System.out.println("foldingScreenHuaWeiPhone 的手机类型为:");
        foldingScreenHuaWeiPhone.screenType();

        // 创建一个小米折叠屏手机
        FoldingScreenMiPhone foldingScreenMiPhone = new FoldingScreenPhoneFactory().createMiPhone();
        System.out.println("foldingScreenMiPhone 的手机类型为:");
        foldingScreenMiPhone.screenType();

    }

}

patrón de la fábrica escenarios abstractos de uso: una familia de objetos (o un conjunto de objetos sin ningún tipo de relación) tienen las mismas limitaciones, puede fábrica de resumen. Por clase de fábrica, como siempre que se sepa que la clase de fábrica que puede crear un objeto de una necesidad

1

desventajas :

dificultades de la familia de productos extendidos. Tales como la adición de un teléfono con un tipo de lápiz en el tipo de teléfono, a continuación, cada clase se ha logrado en ambos teléfonos tienen que poner en práctica este método. Esta es una grave violación del principio de apertura y cierre.

ventajas:

Aumento del nivel de simplicidad. Si la adición de un doble pliegue y el teléfono móvil de la pantalla de la pantalla de tres veces en un teléfono de pantalla plegada que es relativamente simple, sólo las siguientes modificaciones necesita fábricas Construir sobre la línea en el teléfono de pantalla plegable.

resumen

Se utilizará el siguiente hecho, el proceso de desarrollo general, se utiliza un patrón de la fábrica más sencilla, Abstract Factory, las necesidades de negocio, entonces relativamente grandes. Si usted tiene un mejor punto de vista, son bienvenidos en el área de comentarios propuesta, aprender unos de otros.

referencias:

Doy la bienvenida a la atención

Publicado 16 artículos originales · alabanza ganado 16 · vistas 2593

Supongo que te gusta

Origin blog.csdn.net/weixin_43973190/article/details/105066571
Recomendado
Clasificación