Concepto de patrón de fábrica simple
Es establecer una clase de fábrica y crear instancias de algunas clases que implementen la misma interfaz. La esencia de un patrón de fábrica simple es que una clase de fábrica determina dinámicamente qué instancia de clase de producto (estas clases de productos heredan de una clase o interfaz principal) debe crearse en función de los parámetros entrantes.
Diagrama UML del modo de fábrica simple
Código de patrón de fábrica simple
Cuando estaba aprendiendo el modelo de fábrica simple, utilicé un ejemplo relacionado con los humanos. Los humanos se dividen en hombres y mujeres en el mundo, y primero definen una interfaz abstracta para productos humanos.
/** * Este es el paquete de patrones de fábrica */paquete com.roc.factory;/** * Interfaz abstracta del producto humano * @author liaowp * */public interfaz humano {public void say ();}Entonces, tanto los hombres como las mujeres tienen formas de hablar.
/** * Este es un paquete de patrones de fábrica */paquete com.roc.factory;/** * man hombre * @author liaowp * */public class Man implementa humano {/ * say Method * @see com.roc.factory.human#say () */@override public void dice () {system.println ("man"); }} /** * Este es el paquete de patrones de fábrica */paquete com.roc.factory;/** woman * @author liaowp * */public class Woman implementa humano {/ * decir método * @see com.roc.factory.human#say () */@override public void Says () {System.println ("mujer"); }}Finalmente, escriba una clase de fábrica para crear hombres y mujeres. El primer método se logra utilizando el juicio lógico.
paquete com.roc.factory;/** * Factory simple * @author liaowp * */public class sampleFactory {public static static human makehuman (type de cadena) {if (type.equals ("man")) {humano = nuevo man (); Hombre de regreso; } else if (type.equals ("womman")) {mujer humana = nueva mujer (); mujer de regreso; } else {System.out.println ("no se puede producir"); regresar nulo; }}}El segundo método es usar Java Radiation para implementarla. Creo que este tipo de implementación es mejor.
paquete com.roc.factory;/** * Implementación de radiación de fábrica simple * @author liaowp * */public class sampleFactory1 {public static humano makehuman (clase c) {humano humano = null; intente {humano = (humano) class.forname (c.getName ()). NewInStance (); } Catch (InstanciationException e) {// TODO Auto Generado Bloque System.out.println ("Las clases o interfaces abstractas no son compatibles"); E.PrintStackTrace (); } Catch (ilegalAccessException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); System.out.println ("No se pueden acceder a los objetos privados"); } Catch (ClassNotFoundException e) {// TODO Auto Generado Bloque System.out.println ("ClassNot existe"); E.PrintStackTrace (); } return humano; }}Finalmente, el código del cliente
paquete com.roc.factory;/** * Test de fábrica simple * @author liaowp * */public class Client {public static void main (string [] args) {// humano hombre = samplefactory.makehuman ("man"); // man.say (); // human = human = human SampleFactory.makeHuman ("tttt"); Hombre humano = sampleFactory1.makehuman (man.class); hombre.say (); Mujer humana = SampleFactory1.MakeHuman (mujer.class); mujer.say (); }} Escenario de aplicación de modo de fábrica simple
Ventajas: La clase de fábrica es la clave para todo el modelo. Contiene juicios lógicos necesarios y determina qué objeto de clase específico debe crearse en función de la información dada por el mundo exterior. Al usar la clase de fábrica, el mundo exterior puede deshacerse de la vergonzosa situación de crear directamente objetos de producto específicos, y solo debe ser responsable de los objetos de "consumo". No importa cómo se creen y organicen estos objetos. Se aclaran sus respectivas responsabilidades y derechos, que conducen a la optimización de toda la arquitectura del software.
Desventajas: Dado que la clase de fábrica concentra la lógica de creación de todos los casos, viola el principio de asignación de responsabilidad alta cohesiva, toda la lógica de creación se concentra en una clase de fábrica; Las clases que puede crear solo se pueden considerar por adelantado. Si se necesita agregar una nueva clase, la clase de fábrica debe cambiarse. A medida que el número de categorías de productos específicas en el sistema continúa aumentando, puede haber un requisito para que las clases de fábrica creen diferentes instancias de acuerdo con diferentes condiciones. Este juicio de las condiciones y el juicio de los tipos de productos específicos se entrelazan, lo que dificulta evitar la propagación de funciones del módulo, que es muy desfavorable para el mantenimiento y la expansión del sistema;
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.