依赖倒置原则
概念
A. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
B. 抽象不应该依赖于具体实现细节,而具体实现细节应该依赖于抽象。
解读
A.比如要实现人开灯的功能,人不需要知道灯打开的具体方式是push 或者pull或者其他,而是抽象一个拥有turnOn turnOff方法的light接口,人和具体的灯均依赖于这个接口,人通过调用turnOn turnOff触发开灯关灯,而灯的具体类以各自的方式实现turnOn turnOff功能。
B.比如灯的开关方式各有不同,有的通过push实现有的通过pull实现,抽象不能根据push和pull来决定,而应该抽取turnOn turnOff来屏蔽具体细节。
好莱坞原则
“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”,留下你的(低层组件)联系(调用)方式,我们(高层组件)来决定什么时候联系(调用)你(低层组件)。
依赖倒置原则与好莱坞原则
依赖倒置原则强调抽象,而好莱坞原强调高层组件对低层组件使用方式的控制
评论