模式在不影响现有行为的情况下中断继承

时间:2016-11-08 06:24:47

标签: c++ oop inheritance design-patterns

我有来自其他类的继承的类。我正在寻找模式,这将允许我打破这种类继承类继承并使用接口。

例如: 考虑我有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.

我没有看到这种方法有任何问题。但我很想知道,是否有任何众所周知的模式/解决方案可用于此类重构问题?

谢谢, 凯拉斯

0 个答案:

没有答案