依赖注入模式

依赖注入模式

什么是依赖注入:

依赖注入就是new好了依赖的对象注入进去,而不是在类中显式的new一个依赖的对象

依赖注入的中心思想:

高层模块不应依赖于低层模块,他们都应该依赖于抽象
抽象不依赖细节,细节依赖抽象

public interface IDataAccess
{
        void Add();
}
public class SqlServerDal:IDataAccess
{
       public void Add()
       {
           Console.WriteLine("在数据库中添加一条订单!");
       }
}
  public class Order
  {
        private IDataAccess _ida;//定义一个私有变量保存抽象
 
        //构造函数注入
        public Order(IDataAccess ida)
        {
            _ida = ida;//传递依赖
      }
 
        public void Add()
        {
            _ida.Add();
        }
}

我们再来编写控制台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace DIPTest
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlServerDal dal = new SqlServerDal();//在外部创建依赖对象
            Order order = new Order(dal);//通过构造函数注入依赖
 
            order.Add();
 
            Console.Read();
        }
    }
}

这样就解偶了Order和SqlServerDal类方法,SqlServerDal可以换成accessDal,非常灵活,不需要修改代码。