Patrón de diseño de Java: patrón de fábrica simple (incluidas las preguntas)

Consejo: Una vez escrito el artículo, la tabla de contenido se puede generar automáticamente. Cómo generarla puede consultar el documento de ayuda a la derecha.

Directorio de artículos

  • Patrón de fábrica simple
  • el código
  • ejercicio

 1. Definición:

Defina una clase de fábrica que pueda devolver instancias de diferentes clases según diferentes parámetros. Las instancias creadas generalmente tienen una clase principal común. Una fábrica solo hace una cosa, y el patrón de fábrica simple generalmente crea un objeto como un método estático, por lo que también se le puede llamar patrón de fábrica estático.

estructura:

        1. Fábrica (rol de fábrica): es el núcleo del patrón de fábrica simple, responsable de implementar la lógica interna de creación de todas las instancias. El mundo exterior puede llamar directamente al método de creación de una clase de producto en la clase de fábrica para crear el objeto de producto requerido.

        2. Producto (rol de producto abstracto): es la clase principal de todos los objetos creados por la fábrica simple y es responsable de describir la interfaz común compartida por todas las instancias.

        3. ConcreteProduct (rol de producto específico): es el objetivo de creación del modelo de fábrica simple.

 Ventajas y desventajas:

        ventaja:

        1. La clase de fábrica contiene juicios lógicos necesarios, que pueden decidir cuándo crear una instancia de qué producto. El cliente puede quedar exento de la responsabilidad de crear directamente objetos de producto, y sólo "consumir" productos, realizando la separación entre creación y uso de objetos.

        2. El cliente no necesita conocer el nombre de clase del producto específico que se creará, solo necesita conocer los parámetros.

        3. Introducir archivos de configuración para reemplazar y agregar nuevas categorías de productos específicos sin modificar el código del cliente, lo que mejora la flexibilidad del sistema.

        defecto:

       1.  La clase de fábrica del modelo de fábrica simple es única, responsable de la creación de todos los productos y la responsabilidad es demasiado pesada. Una vez que ocurre una excepción, todo el sistema se verá afectado.

        2. El uso del patrón de fábrica simple aumentará la cantidad de clases en el sistema (introduciendo nuevas clases de fábrica), aumentando la complejidad y dificultad de comprender el sistema.

        3. Es difícil expandir el sistema. Una vez que se agrega un nuevo producto, es necesario modificar la lógica de fábrica. Cuando hay muchos tipos de productos, la lógica puede ser demasiado complicada.

        4. El patrón de fábrica simple utiliza un método de fábrica estático, que evita que los roles de fábrica formen una estructura jerárquica basada en la herencia.

Dos, diagrama de clases

 

3. Código
 

package simpleFactory;
//手机抽象类(抽象产品类)
public abstract class Phone {
    String type;
    public abstract void showType();
}
package simpleFactory;
//具体产品类(iphone手机类)
public class Iphone extends Phone{

	@Override
	public void showType() {
		type="iphone";
		System.out.println(type);
	}

}

package simpleFactory;
//简单工厂(手机工厂)唯一的
public class PhoneFactory {
	public static Phone getPhone(String type) {
		Phone phone=null;
		//根据手机类型type的值,进行对象的创建
		if ("iphone".equals(type)) {
			phone=new Iphone();
		}
		if ("vivo".equals(type)) {
			phone=new Vivo();
		}
		return phone;
	}
}
package simpleFactory;
//具体产品类(vivo手机类)
public class Vivo extends Phone{

	@Override
	public void showType() {
		type="vivo";
		System.out.println(type);
	}

}
package simpleFactory;

public class Test {
	public static void main(String[] args) {
		Phone phone;
		phone=PhoneFactory.getPhone("vivo");
		phone.showType();
	}
}

4. Ejemplos


V. Resumen

 En el caso de relativamente pocos tipos de productos, considere utilizar el modelo de fábrica simple.

El cliente solo conoce los parámetros entrantes y no crea objetos.

Supongo que te gusta

Origin blog.csdn.net/weixin_60249074/article/details/124947136
Recomendado
Clasificación