閱讀422 返回首頁    go 阿裏雲 go 技術社區[雲棲]


設計模式六大原則---依賴倒置原則(DIP)

    定義

   依賴倒置原則(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、依賴於抽象就是要對接口編程,不要對實現編程。

    

    

    

     

最後更新:2017-04-03 12:56:38

  上一篇:go android網絡抓包及Wireshark介紹
  下一篇:go Coursera Scala 2-2:Curry函數