我有来自其他类的继承的类。我正在寻找模式,这将允许我打破这种类继承类继承并使用接口。
例如: 考虑我有Base类,很少派生类如下
Lib A :
class Base { ... }
Clients:
class Derived1 : public Base { ... }
class Derived2 : public Base { ... }
class Derived3 : public Derived2 { ... }
客户端使用Base,Derived1,Derived2,Derived3。
的对象我想继续将Base公开为接口。 这样,
Lib A will contain:
Interface IBase ( exposed )
and Class BaseImpl ( internal )
And clients will use
class Derived1 : public IBase { .. }
class Derived2 : public IBase { .. }
class Derived3 : public IBase { .. }
现在的问题是,如果我按上述方法进行更改,我将在这里松开BaseImpl提供的默认实现。
我能想到的一个可能的解决方案是将工厂作为:
Lib A:
Interface IBase { ... }
class BaseImpl : public IBase {
...
}
export static IBase* GetDefaultBase()
{
return new Base();
}
clients:
class Derived1 : public IBase
{
public:
Derived1() {
m_base = GetDefaultBase();
}
// and all implemented apis can use m_base to call default behavior provided by BaseImpl.
我没有看到这种方法有任何问题。但我很想知道,是否有任何众所周知的模式/解决方案可用于此类重构问题?
谢谢, 凯拉斯