Principle Of Dependence Inversion(依赖倒置原则)

(一)依赖倒置原则的定义数据库

高层模块不该该依赖低层模块,二者都应该依赖其抽象,抽象不该该依赖细节,细节不该该依赖抽象。精髓思想:要面向接口编程,不要面向实现编程(依赖倒置原则是实现开闭原则的重要途径之一,它下降了客户与实现模块之间的耦合编程

例如:spa

DBHelp,里面含有链接数据库的方法,包括增删改查等等一系列的方法,而DBHelp类就是一个抽象,它就是一个接口编程,而链接DBHelp类的方法,就是一个实现编程。就达到了依赖倒置原则的原始定义。3d

(二)依赖倒置原则的做用code

  1. 下降类之间的耦合性
  2. 提升系统稳定性
  3. 减小并行开发引发的风险
  4. 提升代码的可读性和可维护性

(三)依赖倒置原则的实现方法blog

依赖倒置原则的目的就是经过面向接口编程下降类之间的耦合性,要想充分的发挥依赖倒置原则,则知足以下4个原则方可。继承

  1. 每一个类尽可能提供接口或者是抽象类,如二者都能知足则更好
  2. 变量声明类型尽可能是接口或者是抽象类
  3. 任何类都不该该从具体类派生
  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());
            }
        }
    }
}