第三方框架集成:框架设计者的经验教训
在开发框架和库时,避免集成陷阱和不必要的碎片化是至关重要的。框架设计者应牢记可测试性这一基本原则,以减少集成问题。
可测试性原则
框架设计者应将可测试性作为核心原则。这意味着框架所交互的客户端和服务代码都应易于测试,这自然会导向松耦合、作用域和模块化设计等更广泛的概念。
- 模拟替换 :在框架设计中,用模拟对象替换实际组件是最关键却常被忽视的特性。多数框架自身经过严格测试,但往往忽略客户端代码的可测试性。考虑客户端代码设计与API和实现逻辑设计同样重要,这样设计的框架通常更易用和理解。
- 封装问题 :过多暴露公共类会带来风险,客户端可能会扩展和使用这些类,导致框架架构或内部设计难以更改。例如Spring Framework的SpringMVC,所有类都是公共且非最终的,用户可绑定任何代码,框架更改易破坏大量客户端应用。此外,Spring的许多模块相互扩展和使用,如Spring Security,其组件依赖Spring的生命周期系统和JavaBeans属性编辑器,难以移植到其他依赖注入系统。
- 强制继承问题 :强迫用户为功能扩展框架基类会模糊依赖和父类的界限。组合是更好的选择,因为委托对象在单元和集成测试中易被模拟或存根替换,而父类方法难以模拟,不利于测试。
这些问题大致可分为三类:
- 阻碍测试或使测试变得困难的问题。
- 通过破坏拦截和作用域来限制功能的问题。
- 使集成变得困难或不可能的问题(最严重)。
超级会员免费看
订阅专栏 解锁全文
1941

被折叠的 条评论
为什么被折叠?



