处理接口多重继承的方法
C++ Way of handling multiple inheritance for interfaces
我正在研究重构大量代码,并讨论了处理继承的最佳方式。给定以下三个类
class Listener_Interface {
public:
virtual void message(data& data);
}
class Timing_Interface {
public:
virtual void timerEvent(data& data);
}
class Action_Interface {
public:
virtual void action(data& data);
}
需要一个类来实现所有这些,并提供一些额外的特定方法。我应该像这样继承吗?
class NewClass_Interface :
public Listener_Interface,
public Timing_Interface,
public Action_Interface {
public:
virtual void newMethod();
}
class NewClass : NewClass_Interface {
....
}
或
class NewClass_Interface {
public:
virtual void newMethod();
}
class NewClass :
public NewClass_Interface
public Listener_Interface,
public Timing_Interface,
public Action_Interface {
....
}
对我来说,前一种似乎更正确,更容易测试等。但是由于某些原因,所有的类和代码看起来都像后者。
这取决于你的逻辑。有时你可能希望你的NewClass_Interface
不一定与Listener, Timing和Action有关系。但现在看来情况并非如此,我同意你的看法。对接口的使用约束得越好,代码就会越可靠。
所以我要这样写:
class Listener_Interface {
public:
virtual void message(data& data) = 0;
}
class Timing_Interface {
public:
virtual void timerEvent(data& data) = 0;
}
class Action_Interface {
public:
virtual void action(data& data) = 0;
}
(观察我如何使你的方法纯虚的为了使你的类真正的接口)
class NewClass_Interface :
public Listener_Interface,
public Timing_Interface,
public Action_Interface
{
public:
virtual void newMethod() = 0;
}
class NewClass : NewClass_Interface {
....
}
这样你就能更好地控制正在发生的事情。
此外,我建议您使用最常见的接口命名标准:IListener
, ITiming
, IAction
和INewClass
。
相关文章:
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 使用父类方法覆盖的多重继承
- C++多重继承 - 相同的方法名称 - 我可以以某种方式删除其中一个吗?
- 通过相同的纯虚拟方法,来自不同抽象基础的C 多重继承
- C 多重继承,虚拟方法覆盖问题和协变量返回类型
- 我应该如何处理类型而不是方法的多重继承冲突
- C++:处理这种多重继承的最佳方法是什么
- 从具有多重继承的派生类调用所有基类的通用命名方法
- 在多重继承布局中单独重写虚拟方法
- 多重继承:2类1方法
- C++从多重继承的模板类中调用虚拟方法
- 虚方法和多重继承
- 在多重继承中,被重写的虚方法保存在c++的虚表中
- c++ - OOP设计-多重继承和纯虚方法
- 为什么多重继承具有不同签名的方法是不明确的
- Qt QTableView多重继承方法
- SWIG JAVA 如何使用 %interface 和纯虚拟方法包装C++多重继承
- 用于多重继承的虚拟方法表
- 处理接口多重继承的方法
- c++多重继承方法重载