設計模式六大原則---依賴倒置原則(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