Notas sobre patrones de diseño de Java para principiantes: continuación del patrón de fábrica

El patrón de fábrica se puede utilizar para separar el proceso de creación y el uso de objetos (es decir, desacoplarlo), promoviendo así la encapsulación del proceso de creación de objetos.

Al revisar los ejemplos 1 y 4 del artículo anterior , Notas sobre el aprendizaje de patrones de diseño Java para principiantes: patrón de fábrica , es posible que tenga las siguientes preguntas:

 

¿Por qué tener una clase de producto abstracta?

¿Por qué el método de fábrica devuelve un tipo de clase de producto abstracto?

¿Por qué el objeto de clase de producto también se define a través de la clase de producto abstracta cuando lo llama el cliente?

 

Este es el polimorfismo de la clase de producto en el patrón de fábrica .

 

Dado que la clase de producto específica hereda (o implementa) de la clase de producto abstracta, el cliente no necesita conocer el tipo real del producto específico y aún puede obtener el producto que desea.

Este polimorfismo promueve el efecto de encapsulación del patrón de fábrica. La clase de fábrica encapsula completamente los detalles de qué producto se creará y cómo crear el objeto del producto.

 

Comprender el polimorfismo a través del mundo real:

El cliente A originalmente quería comprar un Audi A6, pero el fabricante produjo un nuevo Audi A8. El Audi A6 ya no se fabrica y el precio es aproximadamente el mismo. Entonces, el cliente A cambió el pedido y compró un Audi A8.

Luego, según el Ejemplo 1, solo necesitamos agregar una nueva clase de producto específica AudiA8Car y luego modificar la clase de fábrica CarFactory.

Ejemplo 5:

 

Audi A8 (rol específico del producto):

Se ha añadido una nueva categoría de producto específica, los coches nuevos producidos por FAW-Volkswagen.

/*
 * 奥迪A8,是一汽大众生产的一款汽车 (具体产品类)
 */
public class AudiA8Car extends Car {
	
	public AudiA8Car(){
		this.name = "奥迪A8";
		
	}
	
	public String toString(){
		return "一辆"+ this.name;
	}

}

 

FAW-Volkswagen (función de fábrica):

El método estático de fábrica ManufactureCar() ha sido modificado. Originalmente devolvía el objeto AudiA6Car , pero ahora devuelve el objeto AudiA8Car .

/*
 * 生产汽车的工厂,一汽大众 (工厂类)
 */
public class CarFactory {

	/*
	 * 生产汽车(通过一个静态方法来得到一辆汽车的对象)
	 */
	public static Car manufactureCar(){

//		奥迪A6停产了
//		return new AudiA6Car();
		
//		新款汽车奥迪A8
		return new AudiA8Car();
	}

}

 

Coche (rol de producto abstracto):

Igual que el Ejemplo 1, no se realizaron cambios.

/*
 * 奥迪A6,是一汽大众生产的一款汽车 (具体产品类)
 */
public class AudiA6Car extends Car {
	
	public AudiA6Car(){
		this.name = "奥迪A6";
		
	}
	
	public String toString(){
		return "一辆"+ this.name;
	}

}

 

Cliente A (cliente) que compró este coche Audi A6: 

También lo mismo que el Ejemplo 1, sin ningún cambio.

/*
 * 购买汽车的顾客A(客户端)
 */
public class CustomerA {
	
	public static void main(String[] args){
		
//		通过汽车工厂来制造出了一辆汽车
		Car myCar = CarFactory.manufactureCar();
		System.out.println("一辆汽车被造好,并且出厂了。");
		
//		顾客得到了一辆汽车,十分的高兴
		System.out.println("我终于买了"+myCar+"。真是太好了!");
	}

}

 

 

resultado de la operación:

一辆汽车被造好,并且出厂了。
我终于买了一辆奥迪A8。真是太好了!

 

De acuerdo con los resultados de ejecución anteriores, puede ver los beneficios de este polimorfismo:

Se mejora el efecto de encapsulación y el cliente puede realizar el cambio de requisitos sin realizar ningún cambio.

 

 

En general,

El patrón de fábrica separa la creación y el uso de objetos mediante desacoplamiento y polimorfismo, encapsula el complejo proceso de creación de objetos y unifica el uso de objetos.

Favorece el mantenimiento y la modificación del código, lo que facilita que el código se adapte a los cambios en los requisitos y reduce el impacto de estos cambios en el sistema.

Supongo que te gusta

Origin blog.csdn.net/louis_lee7812/article/details/83764262
Recomendado
Clasificación