(一)依赖倒置原则的定义
高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节不应该依赖抽象。精髓思想:要面向接口编程,不要面向实现编程(依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合)
例如:
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());
}
}
}
}