Par*_*rag 26 inheritance testability composition
在设计我的对象时,我发现从可测试性的角度来看,组合是更好的选择.原因是,如果需要的话,我可以在运行单元测试时模拟部分组合结构.如果我有一个继承层次结构,这是不可能的.
我想知道其他人是否也发现这是喜欢作曲的理由.还有什么其他可测试性陷阱,因为使用了继承?
The*_*TXI 31
我相信你越是开始使用设计模式开发,你会越来越多地发现组合比继承更受青睐.我实际上相信Head First:Design Patterns一书中的"赞成组合而不是继承 "是主要的设计原则之一.
您可以模拟部分组合进行测试的示例可能是最好的示例之一.
编辑:虽然设计模式的基本原则是支持组合而不是继承,但这并不意味着没有设计模式在需要的地方使用继承.另一个基本的例子是装饰器模式,你正在编写一个抽象的超类(虽然这是用于类型匹配而不是用于实现"is-a"关系).
S.L*_*ott 10
这不是一种或两种情况.他们不是竞争对手.
继承也很容易进行单元测试.但是,它有时需要模拟具体类来测试抽象超类.
继承很容易被不正确地使用.有些设计看起来像"is-a"情况,但实际上并非如此 - 它们更加细致入微.有时它真的是"表现得像",你需要某种组合(例如策略)来将行为与其他属性分开.
Gang of Four Design Patterns一书基本上都是关于为什么更喜欢组合而不是继承,并提供了许多方法来做到这一点.一些原因:
| 归档时间: |
|
| 查看次数: |
7651 次 |
| 最近记录: |