再看IOC, 读深入理解DIP、IoC、DI以及IoC容器
IoC则是一种 软件设计模式,它告诉你应该如何做,来解除相互依赖模块的耦合。控制反转(IoC),它为相互依赖的组件提供抽象,将依赖(低层模块)对象的获得交给第三方(系统)来控制,即依赖对象不在被依赖模块的类中直接通过new来获取。依赖倒置原则,它转换了依赖,高层模块不依赖于低层模块的实现,而低层模块依赖于高层模块定义的接口。通俗的讲,就是高层模块定义接口,低层模块负责实现。控制反转(IoC)一种重要的方式,就是将依赖对象的创建和绑定转移到被依赖对象类的外部来实现。依赖注入(DI),它提供一种机制,将需要依赖(低层模块)对象的引用传递给被依赖(高层模块)对象。
转自http://www.cnblogs.com/liuhaorain/p/3747470.html
截取的这段话话解释的很精辟。目前接触的.Net中可用的IOC容器:CastleWindsor,MEF,Unity。它们大体功能相同, 无非是通过代码、Attribute或者配置文件将接口与实现配对,放入容器中用来映射依赖, 管理对象的创建和生存周期,然后由系统或者手动通过接口获取相应的实现类。
对上转文中提到的MEF作为IoC容器是有点勉强,它的主要作用还是用于应用程序扩展,避免生成脆弱的硬依赖项,个人认为MEF是实现了IOC基本认为的IOC框架,作为Ioc MEF可能仅仅可以充当对象工厂,提供管理对象生命周期以及缓存的功能,并且它最大的好处是,如果你对IOC没有太高特定化的需求,MEF提供的.Net Framework 级别的Ioc,你不需要引入任何额外的东西。
那我们能把MEF完全当做IOC来用么?个人观点:MEF(Managed Extensibility Framework)顾名思义它创建的目的是简化创建可扩展的应用程序,因此,它主要是作用在应用程序间的有组合能力部件。那么它主要关注于可扩展的支持,强调组合而不是依赖注入。那么我们把MEF拿来用作IOC是对的么,总觉得怪怪的。
So,问题来了,怎么去理解MEF与IOC。后续研究!
再看IOC, 读深入理解DIP、IoC、DI以及IoC容器的更多相关文章
- Atitit。如何实现dip, di ,ioc ,Service Locator的区别于联系
Atitit.如何实现dip, di ,ioc ,Service Locator的区别于联系 1. Dip原则又来自于松耦合思想方向1 2. 要实现dip原则,有以下俩个模式1 3. Ioc和di的 ...
- .NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
依赖倒置原则(DIP) 依赖倒置(Dependency Inversion Principle,缩写DIP)是面向对象六大基本原则之一.他是指一种特定的的解耦形式,使得高层次的模块不依赖低层次的模块的 ...
- dip vs di vs ioc
https://stackoverflow.com/questions/6766056/dip-vs-di-vs-ioc https://docs.microsoft.com/en-us/aspnet ...
- 关于 prototype与__proto__ (用到的时候再看一次 加深理解)
链接顺序: 1. https://blog.csdn.net/ligang2585116/article/details/53522741 2.https://www.jianshu.com/p/80 ...
- 深入理解DIP、IoC、DI以及IoC容器(转载)
<转载的这个up的其他的文章也很nice> 这几个词第一眼看,懵逼,第二眼看,更特么懵逼..... 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序. 其中,OOD有一 ...
- 深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
- 深入理解DIP、IoC、DI以及IoC容器(转)
深入理解DIP.IoC.DI以及IoC容器 摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.D ...
- 【转】深入理解DIP、IoC、DI以及IoC容器
原文链接:http://www.cnblogs.com/liuhaorain/p/3747470.html 前言 对于大部分小菜来说,当听到大牛们高谈DIP.IoC.DI以及IoC容器等名词时,有没有 ...
- 【来龙去脉系列】深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
随机推荐
- (转载)如何优化MySQL insert性能
(转载)http://blog.csdn.net/tigernorth/article/details/8094277 对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题就是 ...
- opengl performance optimization
OpenGL 性能优化 作者: Yang Jian (jyang@cad.zju.edu.cn) 日期: 2009-05-04 本文从硬件体系结构.状态机.光照.纹理.顶点数组.LOD.Cull等方面 ...
- HDOJ/HDU 2560 Buildings(嗯~水题)
Problem Description We divide the HZNU Campus into N*M grids. As you can see from the picture below, ...
- hdu4281 区间dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283 #include<iostream> #include<algorithm&g ...
- mysql 引擎区分
MySQL常用的存储引擎为MyISAM.InnoDB.MEMORY.MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM是MySQL的默认存储引擎.MyISAM不支 ...
- UINavigationBar-使用总结
多视图应用程序中,我们常常使用到自定义UINavigationBar来完成导航条的设置. 1.获取导航条 UINavigationBar *navBar = self.navigationCo ...
- JDK安装目录下的src
学Java这么久,JDK目录下的包有哪些都不知道,今天偶然解压到src明白了许多道理 1.进入JDK安装目录,我的安装路径为:E:\JDK\jdk1.8.0,可以看到这里有个src压缩文件 2.直接解 ...
- Color Cube – 国产的优秀配色取色工具
官方下载地址:http://fancynode.dbankcloud.com/ColorCube2.0.1ForWin.rar 比如今天所要介绍的 Color Cube (配色神器) 就属于“功大于过 ...
- [React] React Fundamentals: with-addons - ReactLink
It can be tedious to type out all the boilerplate needed to get the DOM and states in React to synch ...
- android 23 启动带2个Categories值的预定义acticity和桌面activity
mainActivity.java package com.sxt.day04_07_twoaction; import android.os.Bundle; import android.app.A ...