高类层次结构在运行时有哪些缺点?
我们将 H
称为层次结构的高度(即:从基类到叶子要遍历多少个类)。
dynamic_cast
会花费更多:花费 O(H)
。
是否有其他运算符或语言功能受到影响?
最佳答案
主要问题是可维护性。很深的类层次结构可能没有正确建模。任何超过 3-4 级别的内容都会让您收到警报。您可能是从具体类派生的,这是您永远不应该做的事情(Liskov Substitution principle 不允许这样做)。如果您的基类充斥着虚
函数(我的意思是不纯函数),那么重构将很困难。
将您的基类拆分为几个不同的接口(interface) (Interface Segregation)。更喜欢组合而不是继承(GoF fundamental rule 软件设计)。
个人建议:尝试在没有dynamic_cast
的情况下进行编程。当我还是一名 C++ 开发人员时,我完全可以在没有 dynamic_cast
的情况下进行编程。我在适当的地方使用了设计模式,工厂,visitors等等。没有类型转换的生活要简单得多:-)。
祝你好运!
关于C++:高层类层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4345357/