依赖注入分享.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 使用Ninject的一般步骤 在使用Ninject前先要创建一个Ninject内核对象 class Program { static void Main(string[] args) { //创建Ninject内核实例 IKernel ninjectKernel = new StandardKernel(); } } 使用Ninject内核对象一般可分为两个步骤。第一步是把一个接口(IValueCalculator)绑定到一个实现该接口的类(LinqValueCalculator) ... //绑定接口到实现了该接口的类 ninjectKernel.BindIValueCalculator().ToLinqValueCalculator(); ... 第二步是用Ninject的Get方法去获取IValueCalculator接口的实现。 ... // 获得实现接口的对象实例 IValueCalculator calcImpl = ninjectKernel.GetIValueCalculator(); // 创建ShoppingCart实例并注入依赖 ShoppingCart cart = new ShoppingCart(calcImpl); * * 但看上去Ninject的使用好像使得编码变得更加烦琐,直接使用下面的代码不是更简单吗: IValueCalculator calcImpl = new LinqValueCalculator(); ShoppingCart cart = new ShoppingCart(calcImpl); Console.WriteLine(Total: {0:c}, cart.CalculateStockValue()); 的确,对于单个简单的DI,用Ninject确实显得麻烦。但如果添加多个复杂点的依赖关系,使用Ninject则可大大提高编码的工作效率。 * 依赖注入对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在 IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC/DI容器来创建并注入它所需要的资源了。 ??????? 这么小小的一个改变其实是编程思想的一个大进步,这样就有效的分离了对象和它所需要的外部资源,使得它们松散耦合,有利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。 依赖注入总结 * * 分享结束 感谢聆听 分享人:王蕊 科室:信息技术部二科 * * * * * * 依赖注入 分享人:王蕊 * DI——Dependency Injection?? 依赖注入: ?? IoC——Inversion of Control 控制反转: 两个名词: * 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 就像手表齿轮的啮合,软件系统中对象之间的耦合关系与之非常相似。 对象之间耦合度过高的系统,必然会出现牵一发而动全身的情形。 * * 如何降低系统之间、模块之间和对象之间的耦合度,是软件工程永远追求的目标之一。 软件专家Michael Mattson提出了IOC理论 IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦.。 * * IOC解耦过程分析: 齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器,所以,IOC容器成了整个系统的关键核心,它起到了一种类似“粘合剂”的作用,把系统中的所有对象粘合在一起发挥作用。 * * 拿掉IoC容器后的系统 A、B、C、D这4个对象之间已经没有了耦合关系,彼此毫无联系,当实现A的时候,根本无须再去考虑B、C和D了,对象之间的依赖关系已经降低到了最低程度。 * * 常规A使用C示意图 A类不再主动创建C * * 控制反转(IOC) 为什么要起这么个名字? 通过前后的对比,我们不难看出来:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。 * * IOC的别名:依赖注入(DI) 2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”最后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入” * * 所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦

文档评论(0)

qintuod + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档