Patrón de diseño C++ patrón de fábrica simple

Cuando queremos usar un objeto, debemos instanciar el objeto a través de la clase, es decir, necesitamos un nuevo objeto. El proceso de nuevo es muy complicado y tiene que pasar por el proceso de lectura de archivos -> análisis de texto -> creación de objetos -> configuración de valores para atributos . La introducción del modo de fábrica significa que la fábrica completará el paso de crear clases por nosotros. Solo necesitamos usar las clases creadas en la fábrica. Cuando usamos una fábrica, debemos informarle a la fábrica qué objeto queremos, para que podamos decirle a la fábrica nuestras necesidades pasando parámetros

Idea de definición : en el patrón de fábrica simple, las instancias de diferentes clases se pueden devolver de acuerdo con diferentes parámetros. El patrón de fábrica simple define específicamente una clase para que sea responsable de crear instancias de otras clases, y las instancias creadas generalmente tienen una clase principal común

ventajas :

  1. Realizó el desacoplamiento del cliente y la clase de implementación concreta.
  2. Los clientes quedan liberados de la responsabilidad de crear objetos de productos directamente y, en su lugar, simplemente "consumen" productos de productos.
  3. El cliente no necesita conocer el nombre de clase de la categoría de producto específica creada, solo necesita conocer los parámetros correspondientes a la categoría de producto específica

Desventajas :

  1. Cuando desee agregar una nueva categoría de producto, debe modificar el código fuente, que no se ajusta al principio de apertura y cierre
  2. La lógica de creación de todas las clases de productos se concentra en la clase de fábrica, si hay un problema con esta clase. Todo el sistema se verá afectado.

Escenarios aplicables :

  1. La clase de fábrica es responsable de crear menos objetos.
  2. El cliente solo conoce los parámetros pasados ​​a la clase de fábrica y no le importa cómo crear el objeto:

Dado que el patrón de fábrica simple no se ajusta al principio de apertura y cierre, el jefe eliminó este patrón de los 24 patrones de diseño.

Implementación de código (productos de telefonía móvil)

inserte la descripción de la imagen aquí

Primero cree una clase de teléfono móvil abstracta y especifique que el teléfono móvil del producto específico debe tener la función especificada, es decir, la clase de producto debe anular el método en esta clase

//抽象手机
class AbstractPhone
{
    
    
public:
	virtual void ShowName() = 0;
};

El teléfono móvil del producto específico hereda la clase abstracta de teléfono móvil y reescribe sus métodos

//华为
class Huawei : public AbstractPhone
{
    
    
public:
	virtual void ShowName()
	{
    
    
		cout << "Huawe Phone" << endl;
	}
};

//小米
class Xiaomi : public AbstractPhone
{
    
    
public:
	virtual void ShowName()
	{
    
    
		cout << "Xiaomi Phone" << endl;
	}
};

//苹果
class Apple : public AbstractPhone
{
    
    
public:
	virtual void ShowName()
	{
    
    
		cout << "Apple Phone" << endl;
	}
};

Determine qué teléfono debe generarse pasando parámetros

//手机工厂
class PhoneFactory
{
    
    
public:
	static AbstractPhone* CreatePhone(string name)
	{
    
    
		if (name == "huawei")
			//...生产细节
			return new Huawei;
		else if (name == "xiaomi")
			//...生产细节
			return new Xiaomi;
		else if (name == "apple")
			//...生产细节
			return new Apple;
		else
			return nullptr;
	}
};

prueba:

void test()
{
    
    
	//创建工厂
	PhoneFactory* factor = new PhoneFactory;
	//创建手机
	AbstractPhone* phone;
	//指定工厂需要创建的手机
	phone = factor->CreatePhone("huawei");
	phone->ShowName();
	delete phone;

	phone = factor->CreatePhone("xiaomi");
	phone->ShowName();
	delete phone;

	phone = factor->CreatePhone("apple");
	phone->ShowName();
	delete phone;

	delete factor;
}

Captura de pantalla en ejecución : Patrón de diseño
inserte la descripción de la imagen aquí
de lectura recomendado Patrón de método de fábrica C ++

Supongo que te gusta

Origin blog.csdn.net/qq_44443986/article/details/117517685
Recomendado
Clasificación