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