PFactory 简介
使用键名在运行期创建指定类型的类实例。
PFactory 的定义
template <class _Abstract_T, typename _Key_T = PString>
class PFactory
假设有一个基类 MyAbstractClass,它的派生类为 MySolidClass
class MySolidClass : public MyAbstractClass
在类的外部,通过定义一个内部变量的方式来注册这个类 ( Static code )
PFactory< MyAbstractClass >::Worker<MySolidClass> solidFactory("solid", true);
“Solid” 是键名,类型为 _Key_T ( 默认是 PString ), true 指示这个类是否 singleton(单独实例)
下面就可以用键名来构造类的实例:
MyAbstractClass * c = PFactory<BaseClass, TypeClass>::CreateInstance("solid");
另外,PFactory 的静态方法 GetKeyList 可以返回可用的键名列表,返回值实际是一个 std::vector<_Key_T> 类型。
typename PFactory<BaseClass, PString>::KeyList_T keyList = PFactory<BaseClass, Pstring>::GetKeyList();