我有一个类的层次结构,我希望有一个工厂来创建基于字符串类型的实例:
class Base
{
public:
Base() = default;
virtual ~Base();
}
class Derived1 : public Base
{
public:
Derived1( int param );
}
class Derived2 : public Base
{
public:
Derived2( int param1, int param2 );
}
class MyFactory
{
public:
virtual Base * CreateInstance() = 0;
};
令我讨厌的是,CreateInstance()无法传递参数,因为Base具有默认的ctor。如果我坚持在Derived1和Derived2上提供默认ctor,那么我可能违反了OO设计原则,即ctor使实例处于可用状态。有更好的设计吗?