単純なファクトリモデルでは、ファクトリクラスの責任が非常に重要です。特定のボタンのデザインがファクトリのサブクラスに渡されると、抽象ファクトリクラスで定義されたメソッドを実装できます。クロージング。原則として。
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;
}
不利な点は、新しい製品カテゴリが必要な場合、新しい工場カテゴリを追加する必要があることです。カテゴリの数がペアで増加するため、システムの難易度がある程度高くなります。
ファクトリメソッドパターンのアプリケーションには、次のものが含まれます。クラスは必要なオブジェクトを認識していません。クラスはそのサブクラスを介して作成するオブジェクトを指定します。オブジェクトを作成するタスクを複数のファクトリサブクラスの1つであるクライアントに委任します。どのファクトリサブクラスが製品サブクラスを作成するかを気にする必要はなく、必要に応じて動的に指定します。