那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
本文引用转载自https://www.cnblogs.com/aoyeyuyan/p/5495219.html
看完大有裨益。
什么是程序
微观:数据+操作
中观:数据结构+算法
宏观:对象+消息
内聚
自身的内容自身保管,自身的事情自身做,对外界呈现自己的状态和行为。
依赖
在内聚的同时,也要对外开放。
一个对象,往往需要跟其他对象打交道,既包括获知其他对象的状态,也包括依赖其他对象的行为,而一旦这样的事情发生时,我们便称该对象依赖于另一对象。
耦合
存在依赖关系,即存在耦合。
依赖倒置
1.高层不应依赖于底层,它们都应该依赖抽象;
2.抽象不依赖于细节,细节应该依赖抽象;
控制反转
当Client调用server时,这个叫做一般的控制;而当server调用Client时,就是我们所说的控制反转,同时我们也将这个调用称为“回调”。
控制反转跟依赖倒置都是一种编程思想,依赖倒置着眼于调用的形式,而控制反转则着眼于程序流程的控制权。
依赖注入
A对象依赖于B对象,等价于A对象内部存在对B对象的“调用”,而前提是A对象内部拿到了B对象的引用。
其他对象的获取方式:
(1)主动实例化
(2)构造器注入
(3)属性注入
(4)方法注入
区别在于所依赖的对象是否由自己来完成创建。
“依赖注入”常常用于扩展,尤其是在开发框架的设计中。从某种意义上来说,任何开发框架,天生都是不完整的应用程序。因此,一个优秀的开发框架,不仅要让开发者能够重用这些久经考验的的卓越的解决方案,也要让开发者能够向框架中插入自定义的业务逻辑,从而灵活自由地适应特定的业务场景的需要——也就是说要具备良好的可扩展性。
面向接口编程
面向接口,就意味着面向抽象。
总结来看,依赖倒置、控制反转、依赖注入都围绕着“解耦合”的问题,而同时自始至终又都是“面向接口编程”的方法。
对于理想软件的期待常被概括为“高内聚,低耦合”,面向对象”这个表述更加侧重于“高内聚”,“面向接口”的表述则更加侧重于“低耦合”——不过是同一事物的不同侧面。
本文作者:啊原来是这样呀
本文链接:https://www.cnblogs.com/OhOfCourse/p/17163194.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步