设计模式六大原则---依赖倒置原则(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
原创粉丝点击