zoukankan      html  css  js  c++  java
  • 控制反转IOC与依赖注入DI dodo

    一、名词解释

    IoC:Inverse of control,控制反转;

    DI:Depedency Injection 依赖注入

    IoC和DI是从不同角度描述同一件事情,即DI模式是Ioc的具体实现方式,通过引入IoC容器,利用依赖关系注入,实现对象的解耦。

    二、问题引入

    先来看普通的方式:



    我们发现UserService和具体的类OracleDal,SqlserverDal紧密耦合。

    如果把它进行简单的修改,那么UserService就和具体的类没有关系了,而是直接依赖于抽象。



    那么运行时具体的类是哪个呢?这是我们就可以事先注册好一种对于关系,
    先看一段Unity的代码混个眼熟:



    通过解析对应关系可以知道IDal具体的类。调用时:



    可见DI的目的其实就是为了减少对象间的依赖性,降低模块间的耦合度。

    三、优缺点

    优点:实现松耦合;

    缺点:对性能有一定损失,不过现在各个产品都进行了优化升级,目前性能已经相差不会太大了。

    四、IoC相关产品

    Unity,Autofac,Castle,Munq,Funq,Ninject,windsor,StructMap

    在后面的系列中将介绍其中几种Ioc容器。

  • 相关阅读:
    终端启动jupyter notebook需要配置环境变量
    利用requests模块进行数据爬取初级操作
    爬虫初识
    Xadmin使用
    Vue 前端框架中限制用户短时间内多次点击同一按钮的方法(例如:登录、注册)
    Django利用Xadmin作为后台管理系统且在后台显示自定义的APP名称
    MySQL数据库中创建新用户,并将某个指定库的操作权限赋予此用户。。。
    MySQL数据库中删除用户的两种方法
    MySQL数据库中如何查询所有用户
    Django 版本升级
  • 原文地址:https://www.cnblogs.com/zgqys1980/p/2650895.html
Copyright © 2011-2022 走看看