inheritance - 继承与可测试性的组成

标签 inheritance composition testability

在设计对象时,从可测试性的 Angular 来看,我发现组成是更好的选择。原因是,在运行单元测试时,如果需要,我可以模拟组成结构的某些部分。如果我具有继承层次结构,则这是不可能的。

我想知道是否其他人也发现这是更喜欢构图的原因。另外,由于使用了继承,您还遇到了其他可测试性陷阱吗?

最佳答案

我相信,您越开始使用设计模式进行开发,您会发现越来越多的地方倾向于使用组合而不是继承。我实际上相信首先是:设计模式书中的“继承中的重要组成”是主要的设计原则之一。

能够模拟组成部分以进行测试的示例可能是最好的示例之一。

编辑:尽管设计模式的基本原则是偏重于继承而不是继承,但这并不意味着没有设计模式在需要的地方利用继承。另一个基本示例是装饰器模式,其中您正在对抽象父类(super class)进行编码(尽管这是用于类型匹配,而不是用于实现“is-a”关系)。

关于inheritance - 继承与可测试性的组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760473/

相关文章:

python - 从命名元组基类继承

c++ - 由于类型不完整,在 static_assert 中使用 std::is_base_of 失败

uml - 我们如何在 UML 2 中绘制内部类的组合?

java - 使用构造函数注入(inject)正确设计为可测试性而构建的类

java - 可测试的Java代码: using model beans with a constructor

C#.NET - 如何让 typeof() 与继承一起工作?

c# - 防止使用抽象类作为属性类型

functional-programming - 当中间的 promise 中的 promise 检查授权时,如何管道功能?

c# - CompositionContainer.SatisfyImportsOnce 是否重用组件?

java - 作为参数传递给类的关联对可测试性有何影响?