C ++工厂,以及处理子类参数

时间:2015-12-07 11:27:45

标签: c++ oop

我有一个类的层次结构,我希望有一个工厂来创建基于字符串类型的实例:

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使实例处于可用状态。有更好的设计吗?

0 个答案:

没有答案