庞晓杰

又一个WordPress站点

郧阳师专教务网依赖导致原则(DIP)-Android那些事儿

依赖导致原则(DIP)-Android那些事儿

文章摘要
依赖倒置:高层组件—>抽象层<--低层组件
一、要解决的问题:
程序设计的两个组件:低层组件和高层组件。低层组件实现哪些最基础、最基本的操作金廷恩,例如:访问磁盘文件、网络通道数据处理等;高层组件封装那些复杂的业务逻辑,例如:用户操作、信息展示、任务管理等;
逻辑上,高层组件需要依赖低层组件来完成工作天下第一狠,那么在业务实现上,需要要先实现低层组件,然后在这个基础上谭蓓蓓,封装并实现高层组件。这似乎看起来很完美都市至尊天骄,直到我们需要整体从低层组件A 替换为 低层组件B …
二、案例
2.1、背景:
经典程序设计-打印机 :通过键盘输入文字皖维吧,并通过打印机将文字打印出来。
假定:高层组件非常复杂,拥有众多的特性,其中一个特性是拷贝键盘内容并打印(Class Copy)。
2.2、糟糕的设计:
在拷贝业务(Copy) 类中 新野政务网,通过硬编码的方式罗妹妹,写死绑定到具体的打印机 。邢雅晨很明显,这种设计不符合 “依赖倒置原则” ,也很难符合 “开闭原则” 。
当我们需要整体从输入源A 替换为输入源B 时篮坛天王,例如:通过键盘输入的文字内容,不再由打印机打印成文字,而是通过“邮件”抄送全员,此时就需要改动拷贝业务(Copy) 类的业务逻辑并重新进行单元测试。

附氰氟草酯,糟糕的代码实现:

2.3、优雅的设计:
在高层组件和低层组件之间,引入抽象层。高层组件包含复杂的业务逻辑,由直接依赖“低层组件”,变为直接依赖“抽象层”,设计更加灵活;低层组件依赖抽象层来实现它们对外的功能特性凡人杨大头。

附索香漫画,优雅的代码实现:

2.4、案例总结:
2.4.1、糟糕的代码设计迭代时违反“开闭原则”董卿赴美生子。
2.4.2、糟糕的代码设计逻辑固化,迭代成本高。需要重新进行单元测试,这对大型程序来说是个“噩梦”
2.4.3、糟糕的代码设计“脆弱”暗黑魔导师,牵一发而动全身。迭代程序,为程序引入“未知”的运行风险 。
三、思想:
高层组件不应直接依赖低层组件,它们都应依赖于抽象层。
抽象不应该依赖于细节来封装盱眙万事通,细节应该基于抽象来实现郧阳师专教务网朴恩率 。
四、结论
“依赖倒置”原则的应用,让高层组件不再直接依赖低层组件来完成其业务工作。它们共同依赖于接口、超类型组成的抽象层还我今生。
可以在高层组件中引入一些构造器模式,例如:工厂方法、抽象工厂、原型模式等来避免 “new 低层组件()” 硬编码、写死配置。
当然,应用此原则宝塔诗茶,意味着更多的精力,更多的接口、超类型需要维护,用一句话来概括此模式:程序变复杂了,但灵活性增加了。
模板方法模式是“依赖倒置”原则的完美应用者。
注意:“依赖倒置”原则不应被“滥用”,如果程序中方法运行稳定且恒久无须修改,那么就不应该在其中应用此原则。
关注我的技术公众号,查看更多优质技术文章推送