在我的应用程序中,有10-20个类被实例化一次[*].这是一个例子:
class SomeOtherManager;
class SomeManagerClass {
public:
SomeManagerClass(SomeOtherManager*);
virtual void someMethod1();
virtual void someMethod2();
};
Run Code Online (Sandbox Code Playgroud)
类的实例包含在一个对象中:
class TheManager {
public:
virtual SomeManagerClass* someManagerClass() const;
virtual SomeOtherManager* someOtherManager() const;
/** More objects... up to 10-20 */
};
Run Code Online (Sandbox Code Playgroud)
目前,TheManager使用new运算符来创建对象.
我的目的是能够使用插件替换SomeManagerClass(或任何其他类)实现与另一个.为了取代实施,需要两个步骤:
我想我需要某种对象工厂,但它应该相当简单,因为总是只有一种类型要创建(默认实现或用户实现).
有关如何设计像我刚刚描述的简单工厂的想法吗?考虑到将来可能会有更多类的事实,因此应该很容易扩展.
[*]我不在乎它是否不止一次发生.
编辑:请注意,TheManager中包含两个以上的对象.