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
/*
* 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;
}
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.