控制反转

依赖注入方式 DI Types(Dependency injection)

接口注入

在接口中定义需要注入的信息。

首先定义一个接口,组件的注入将通过这个接口进行,该接口应由组件提供者提

供,任何想使用该组件的类都必须实现这个接口。

public interface ILog

{

void Log(string message);

}

public interface ILogInject

{

void InjectLog(ILog log);

}

public class client:ILogInject

{

}

抽象工厂模式

将对象间的依赖关系转移到接口上,在调用时由容器来组装

构造函数注入

根据构造函数的类型调用Create方法建立实体对象,然后将对象传给构造函数

降低构造函数与实体对象之间的关联性

属性注入

与构造函数注入基本类似

Unity特点:

1.支持自定义容器

2.对要注入的类型没限制,除了属性注入和方法注入需要【Dependency】特性标注,对类声明没特别要求

3.支持容器层次结构

4.支持配置文件

什么时候使用

1.类或者对象依赖与别的类或者对象

2.依赖关系比较复杂或者需要进一步提前

3.想利用DI

4.想管理对象实例生命周期

5.希望在运行时改变依赖关系

6.希望在Web 应用程序回复时可以缓存或者持久化依赖关系

转载于:https://www.cnblogs.com/believe3301/archive/2009/05/26/1489419.html

Unity(1)控制反转相关推荐

  1. [翻译]StructureMap 指南 – .NET中的依赖注入和控制反转

    原文地址:http://www.pnpguidance.net/Post/StructureMapTutorialDependencyInjectionIoCNET.aspx StuctureMap ...

  2. 小菜学习设计模式(五)—控制反转(Ioc)

    写在前面 设计模式目录: 小菜学习设计模式(一)-模板方法(Template)模式 小菜学习设计模式(二)-单例(Singleton)模式 小菜学习设计模式(三)-工厂方法(Factory Metho ...

  3. IoC(Inversion of Control,控制反转)模式

    IoC模式 1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它. ...

  4. 控制反转(Ioc)和依赖注入(DI)

    控制反转IOC, 全称 "Inversion of Control".依赖注入DI, 全称 "Dependency Injection". 面向的问题:软件开发 ...

  5. 简述控制反转ioc_讲一下你理解的 DI 、IoC、DIP ?

    作者 | 木小楠 链接 |cnblogs.com/liuhaorain/p/3747470.html 摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要 ...

  6. 依赖倒置原则(DIP)、控制反转(IoC)、依赖注入(DI)(C#)

    象的控制权交由配置文件控制,然后根据配置文件中的信息(程序集+类型),通过反射来获取对象,而不是直接new对象,这也是控制反转的一种体现. IoC容器会连接程序中的所有模块,模块将所需对象的控制权都交 ...

  7. 依赖倒置、控制反转、依赖注入

    实现依赖倒置.控制反转.依赖注入的核心思想是:接口驱动 接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性,实现模块之间的解耦等等. 参考资料:https://www.cnblogs ...

  8. 浅析Spring——控制反转IoC

    目录 1. IoC理论推导 2. 什么是IoC? 3. 引入DI 4. IoC容器 5. 注入对象的四种方法 1.基于接口 2.基于setter 3.基于构造函数 4.基于注解 6. 两种IoC实现方 ...

  9. ioc spring 上机案例_IOC(控制反转)—最后的爱,是放手

    [摘要]Spring框架的一个重要理念之一,就是IOC,英文全拼为Inversion of Control, 中文翻译为控制反转,这是一个非常伟大的理念,不应该只是在程序中被提及. 某些教程,因为缺乏 ...

最新文章

  1. RuntimeError: Integer division of tensors using div or / is no longer supported, and in a future rel
  2. 1750亿参数,史上最大AI模型GPT-3上线:不仅会写文章、答题,还懂数学
  3. AAAI 2020 | 多模态基准指导的生成式多模态自动文摘
  4. 【权值分块】bzoj1503 [NOI2004]郁闷的出纳员
  5. APM - Hello Javaagent
  6. 产品生涯你无法躲开的设计:微信授权登录
  7. Liferay Portal额外研究-银狐999
  8. 计算机网络总结各种协议首部的长度,计算机网络协议总结
  9. 重磅!云+X 案例征集正式启动啦!
  10. Hello log4net——做一个实用好用的log4net的demo(转)
  11. 机器学习----监督学习算法之决策树(Decision Tree)
  12. 左连接与右连接的区别
  13. pingssys-ant design pro基础
  14. w ndows无法安装未知设备,Win7安装驱动程序时提示“unknown device(未知设备)”如何解决...
  15. 从Hibernate4到Hibernate5的建表
  16. 华为云APIG限流控制
  17. GetAsyncKeyState()用法
  18. 中大新华计算机科学与技术,专业评估|信息科学学院电子信息科学与技术、计算机科学与技术、软件工程、数字媒体技术专业评估考察会议举行...
  19. [GWCTF 2019]枯燥的抽奖 1
  20. 深入解析 DataGrid 过滤功能

热门文章

  1. 数据的存入取出(注册机方式)
  2. 个人理财必读书目(转载)
  3. 20145222黄亚奇《Java程序设计》第1周学习总结
  4. Spark分析之Standalone运行过程分析
  5. 工作那些事儿(12)- 缓存
  6. Android中使用httpclient访问服务器,需要session功能
  7. linux日志显示too many open files解决
  8. 字符串异或c语言编写,C语言实现字符串的异或校验.doc
  9. 石墨变为石墨烯的方法
  10. python ftp文件传输客户端