设计模式六大原则---依赖倒置原则(DIP)
来源:互联网 发布:找老婆 知乎 编辑:程序博客网 时间:2024/05/14 03:44
定义
依赖倒置原则(Dependency Inversion Principle)
核心思想:依赖于抽象
具体体现:
体现一:高层模块不应该依赖低层模块。两个都应该依赖抽象。
体现二:抽象不应该依赖细节。细节应该依赖抽象。
依赖倒置原则告诉我们:细节是多变的,而抽象是相对稳定的。所以我们编程的时候要注重抽象的编程,而非细节编程。
实例
1、AGP插槽:主板和显卡之间的关系的抽象。主板和显卡通常是使用AGP插槽来连接的,这样,只要接口适配,不管是主板还是显卡更换,都不是问题。
2、驾照:司机和汽车之间关系的抽象。有驾照的司机可以驾驶各种汽车。
3、电源插座。
下面我们用一个灯的开关的实例来展示:
Switch(开关)、Light(灯),统一一个接口IDevices,让Switch和light都继承这个接口,而且这个接口有两个方法,即开/关,代码如下:
/// <summary> /// 设备 /// </summary> public interface IDevices { void TurnOn(); void TurnOff(); } /// <summary> /// 电灯 /// </summary> public class Light : IDevices { public void TurnOn() { Console.WriteLine("灯泡亮了"); } public void TurnOff() { Console.WriteLine("灯泡黑了"); } } /// <summary> /// 开关 /// </summary> public class Switch:IDevices { IDevices devices; public Switch (IDevices devices) { this.devices =devices ; } public void TurnOn() { Console.WriteLine("打开开关"); devices.TurnOn(); } public void TurnOff() { Console.WriteLine("关上开关"); devices.TurnOff(); } }
class Program { //调用 static void Main(string[] args) { IDevices _switch = new Switch(new Light()); _switch.TurnOn(); _switch.TurnOff(); Console.Read(); } }
建议
1、抽象的稳定性决定了系统的稳定性,因为抽象是保持不变的,依赖于抽象是面向对象程序设计的精髓,也是依赖倒置的核心思想。
2、依赖于抽象是一个通用的规则,而某些依赖于细节在所难免的,必须权衡抽象和具体的取舍,方法不是一成不变的。
3、依赖于抽象就是要对接口编程,不要对实现编程。
3 0
- 设计模式六大原则之--依赖倒置原则(DIP)
- 设计模式六大原则---依赖倒置原则(DIP)
- 设计模式六大原则之--依赖倒置原则(DIP)
- 设计模式--------依赖倒置原则(DIP)
- 设计模式六大原则(3):依赖倒置原则DIP(Dependence Inversion Principle)
- 设计模式六大原则(四)-- 依赖倒置原则(DIP)
- 设计模式六大原则例子(四)-- 依赖倒置原则(DIP)例子
- 设计模式之六大原则——依赖倒置原则(DIP)
- 设计模式之六大原则——依赖倒置原则(DIP)
- 设计模式之六大原则——依赖倒置原则(DIP)
- 设计模式六大原则——依赖倒置原则(DIP,Dependence Inversion Principle)
- 设计模式之六大原则——依赖倒置原则(DIP)
- 设计模式六大原则:依赖倒置原则
- 设计模式六大原则:依赖倒置原则
- 设计模式六大原则----------依赖倒置原则
- 设计模式六大原则 依赖倒置原则
- 设计模式六大原则:依赖倒置原则
- 设计模式六大原则-依赖倒置原则
- 宁波:市民卡三年内将实现“一卡多用、一卡通用”
- 套接字编程中close与shutdown的区别
- delphi 中 DLL 操作
- jquery中prop()方法和attr()方法的区别
- max与argmax的区别
- 设计模式六大原则---依赖倒置原则(DIP)
- 通过装修色彩理解用户
- Ejb in action(四)——购物车实例演示有状态会话Bean
- 把虚拟机中的Linux系统安装到U盘中
- String.Format用法
- Instruments-Automation:在点击操作前检查元素是否存在
- Qt入门-QPushButton
- andriod编程--service 基础知识小结
- SWFUpload