(一)依賴倒置原則的定義
高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象,抽象不應該依賴細節,細節不應該依賴抽象。精髓思想:要面向接口編程,不要面向實現編程(依賴倒置原則是實現開閉原則的重要途徑之一,它降低了客戶與實現模塊之間的耦合)
例如:
DBHelp,裏面含有連接數據庫的方法,包括增刪改查等等一系列的方法,而DBHelp類就是一個抽象,它就是一個接口編程,而連接DBHelp類的方法,就是一個實現編程。就達到了依賴倒置原則的原始定義。
(二)依賴倒置原則的作用
- 降低類之間的耦合性
- 提高系統穩定性
- 減少並行開發引起的風險
- 提高代碼的可讀性和可維護性
(三)依賴倒置原則的實現方法
依賴倒置原則的目的就是通過面向接口編程降低類之間的耦合性,要想充分的發揮依賴倒置原則,則滿足如下4個原則方可。
- 每個類儘量提供接口或者是抽象類,如兩者都能滿足則更好
- 變量聲明類型儘量是接口或者是抽象類
- 任何類都不應該從具體類派生
- 使用繼承時遵循里氏替換原則
(四)代碼案例解析
using System;
namespace Design_Pattern
{
class Program
{
static void Main(string[] args)
{
Customer customer = new Customer();
Console.WriteLine("顧客購買如下商品:");
customer.Shop(new Xiaomi());
customer.Shop(new Huawei());
}
/// <summary>
/// 淘寶網接口
/// </summary>
public interface Taobao
{
String sell();
}
/// <summary>
/// 小米商城
/// </summary>
public class Xiaomi : Taobao
{
public String sell()
{
return "所有的小米商品";
}
}
/// <summary>
/// 華爲商城
/// </summary>
public class Huawei : Taobao
{
public String sell()
{
return "所有的華爲商品";
}
}
/// <summary>
/// 顧客
/// </summary>
public class Customer
{
public void Shop(Taobao taobao)
{
Console.WriteLine(taobao.sell());
}
}
}
}