Unity IOC简单认知
看了不少IOC的文章。简单概念梳理下。
1.依赖,依赖倒置,控制反转(IOC),依赖注入
解释是仿照http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075.html的例子。
依赖:类和类之间的联系。例如播放器类依赖媒体文件类
依赖倒置:本来是A类依赖B类。现在创建IB接口类。让A和B不再互相依赖,A类只知道自己需要调用IB接口的类。例如实现媒体文件接口类。好处在于下次再有新的媒体文件, 播放器类不用重构。
控制反转:本来A类要调用B类就需要创建B类实例,A类要调用C类就需要创建C类实例,而现在具体是调用哪个实例是由配置控制。例如:创建媒体文件类的工作不再由播放器类来完成。Main方法配置去控制是MP3文件还是默认文件。
依赖注入:当创建调用者的时候,IOC容器会向调用注入被调用的实例,因此也称为依赖注入。例如IOC的构造函数注入
下面贴下代码:方便以后回忆的时候看。
class Program
{
static void Main(string[] args)
{
UnityContainer container = new UnityContainer();
container.RegisterType<IPlayer, WYYPlayer>();
container.RegisterType<IPlayer, DefalutPlayer>();
container.RegisterType<IMediaFile, MP3MediaFile>();
container.RegisterType<IMediaFile, DefaultMediaFile>(); var op1 = container.Resolve<Operation>();
op1.Do(); //以前的调用方法
//var op2 = new Operation(new 网易云Player(),new MP3MediaFile());
//op2.Do(); Console.ReadKey();
}
}
public class Operation
{
IMediaFile _mtype;
IPlayer _player; public Operation(IPlayer player, IMediaFile mtype)
{
_player = player;
_mtype = mtype;
} public void Do()
{
_player.play(_mtype);
}
}
public interface IPlayer
{
void play(IMediaFile file);
}
public class DefalutPlayer: IPlayer
{
public void play(IMediaFile file)
{
Console.Write("默认:"+file.Name);
}
} public class WYYPlayer : IPlayer
{
public void play(IMediaFile file)
{
Console.Write("网易云:" + file.Name);
}
} public interface IMediaFile
{
string Name { get; set; }
}
public class DefaultMediaFile: IMediaFile
{
public string Name { get; set; } = "默认文件";
} public class MP3MediaFile : IMediaFile
{
public string Name { get; set; } = "MP3文件";
}
后续:UNITY 容器注入什么就拿到什么。想做到插件式开发。还需要定制注入的规则。
说个插件式开发流程:比如有A实现,B实现。我想要真正来做的是B的方法。
1.反射A,B拿到AB的type。
2.在RegisterType的时候根据具体情况注入哪个。比如数组排序,比如type优先级等
Unity IOC简单认知的更多相关文章
- 总结Unity IOC容器通过配置实现类型映射的几种基本使用方法
网上关于Unity IOC容器使用的方法已很多,但未能做一个总结,故我这里总结一下,方便大家选择. 首先讲一下通过代码来进行类型映射,很简单,代码如下: unityContainer = new Un ...
- MVC中使用Unity Ioc Container
ASP.NET MVC中使用Unity Ioc Container 写在前面 安装Unity 添加服务层 IArticleRepository类型映射 服务注入到控制器 Global.asax初始 ...
- Unity IOC容器通过配置实现类型映射的几种基本使用方法
网上关于Unity IOC容器使用的方法已很多,但未能做一个总结,故我这里总结一下,方便大家选择. 首先讲一下通过代码来进行类型映射,很简单,代码如下 unityContainer = new Uni ...
- Unity Ioc 依赖倒置及Untity AOP被动拦截/自动拦截
各位博友金安,首先声明这是一篇转载的博客,原文链接:https://www.cnblogs.com/scottpei/archive/2013/01/08/2851087.html 十年河东,十年河西 ...
- 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...
- 1.Spring IoC简单例子
Spring IoC简单例子 1.IHelloMessage.java package com.tony.spring.chapter01; public interface IHelloMessag ...
- .NET Unity IOC框架使用实例
1.IOC简介 IOC(Inversion of Control), 控制反转 DI (Dependency Injection),依赖注入 IOC的基本概念是:不创建对象,但是描述创建它们的方式.在 ...
- 今天研究Unity Ioc 框架
今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录……… ...
- Unity IOC容器的简单应用(转)
转自:http://blog.csdn.net/wanzhuan2010/article/details/7763280 Unity是Unity是微软patterns& practices组用 ...
随机推荐
- [原创]cocos2d-x研习录-第三阶 特性之物理引擎
游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmu ...
- 【svn】svn 项目地址修改
1.IDEA修改 确定OK. 2.TortoiseSVN修改 选择项目目录右键->TortoiseSVN->重新定位(Relocate),然后修改URL, 3.Mac OS或Linux客户 ...
- UICollectionView的使用
感谢下面文章作者的无私奉献 基础用法: http://www.cnblogs.com/ios8/p/iOS-UICollectionView.html http://my.oschina.net/jo ...
- 一种扩大View点击范围的方法
Rect rect = new Rect();mBt0.getHitRect(rect); rect.bottom += 400; TouchDelegate touchDelegate = new ...
- 基于Three.js的360X180度全景图预览插件
基于Three.js的360X180度全景图预览插件 时间 2015-08-12 10:01:10 HTML5中国 原文 http://www.html5cn.org/article-8621-1 ...
- 阿里weex学习入门必备
1.阿里weex学习前景 至于这些东西,可以参照一下链接去看看其作用.... http://share.iclient.ifeng.com/news/sharenews.f?forward=1& ...
- javascript基础部分
javascript基础部分 1 数据类型: 基础数据类型(通过typeof来检测):Number,string,undefined,null,boolean,function typeof只能检测 ...
- R语言-实用数据对象处理函数
length(object) 显示对象中元素/成分的数量 dim(object) 显示某个对象的维度 str(object) 显示某个对象的结构 class(object) 显示某个对象的类或类型 m ...
- 并发-Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...
- Microsoft Capicom 2.1 On 64bit OS
第一步下载capicom.dll http://files.cnblogs.com/files/chen110xi/DLL.7z 第二步注册capicom.dll至SysWow64 第三步VS中设置 ...