[Patrón de diseño] Patrón de método de fábrica

En el modelo de fábrica simple, las responsabilidades de la clase de fábrica son demasiado importantes. Si el diseño de un botón específico se entrega a las subclases de la fábrica, pueden implementar los métodos definidos en la clase de fábrica abstracta, lo que puede garantizar la apertura y cierre. en principio.

http://design-patterns.readthedocs.org/zh_CN/latest/creational_patterns/factory_method.html

../_images/FactoryMethod.jpg


/*
 * concreteFactory.cpp
 *
 *  Created on: 2016年2月22日
 *      Author: chenwei
 */
#include "ConcreteFactory.h"
#include "ConcreteProduct.h"

Product* ConcreteFactory::factoryMethod() {
	return new ConcreteProduct();
}



/*
 * ConcreteMain.cpp
 *
 *  Created on: 2016年2月22日
 *      Author: chenwei
 */
#include "Factory.h"
#include "ConcreteFactory.h"
#include "Product.h"
#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
	Factory* fc = new ConcreteFactory();
	Product* prod = fc->factoryMethod();
	prod->use();

	delete fc;
	delete prod;

	return 0;
}



De esta manera, se utiliza el polimorfismo orientado a objetos. La clase de fábrica central ya no es responsable de la creación de películas de producción específicas, sino que se entrega a la subclase de fábrica para que lo haga, lo que permite la introducción de nuevos productos sin modificar la clase de fábrica. .

La desventaja es que cuando se necesitan nuevas categorías de productos, es necesario agregar nuevas categorías de fábrica. El número de categorías aumenta en pares, lo que aumenta la dificultad del sistema en cierta medida.

La aplicación del patrón del método de fábrica incluye: una clase no conoce el objeto que necesita; una clase especifica qué objeto crear a través de sus subclases; delega la tarea de crear un objeto a una de las múltiples subclases de fábrica, el cliente En uso, usted No es necesario preocuparse por qué subclase de fábrica crea la subclase de producto y luego especificarla dinámicamente cuando sea necesario.

Supongo que te gusta

Origin blog.csdn.net/michellechouu/article/details/50718967
Recomendado
Clasificación