在设计对象时,从可测试性的 Angular 来看,我发现组成是更好的选择。原因是,在运行单元测试时,如果需要,我可以模拟组成结构的某些部分。如果我具有继承层次结构,则这是不可能的。
我想知道是否其他人也发现这是更喜欢构图的原因。另外,由于使用了继承,您还遇到了其他可测试性陷阱吗?
最佳答案
我相信,您越开始使用设计模式进行开发,您会发现越来越多的地方倾向于使用组合而不是继承。我实际上相信首先是:设计模式书中的“继承中的重要组成”是主要的设计原则之一。
能够模拟组成部分以进行测试的示例可能是最好的示例之一。
编辑:尽管设计模式的基本原则是偏重于继承而不是继承,但这并不意味着没有设计模式在需要的地方利用继承。另一个基本示例是装饰器模式,其中您正在对抽象父类(super class)进行编码(尽管这是用于类型匹配,而不是用于实现“is-a”关系)。
关于inheritance - 继承与可测试性的组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760473/