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组用 ...
随机推荐
- [课程设计]Scrum 1.5 多鱼点餐系统开发进度
1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统WEB 5.Sprint 1时间:11.14-11.23 重案 ...
- MYCAT介绍(转)
从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个M ...
- acm之poj题库1019方法
认识了几个师弟,一直总想把自己的经验表达出来一些,让后面的人在更年轻的时候,认识到方向.努力. 昨天忽然想起自己在大学时候做了几天的acm,终于也没能坚持.然后就感觉带师弟们做下acm题目还是很不错. ...
- 将页面打印成excel
在servlet中调用 try { File fileWrite = new File("D:/Write.xls"); fileWrite.createNewFile(); Ou ...
- 【maven】之配置开发,测试,正式环境pom.xml文件
在进行web程序开发,如果项目组没有使用自动化发布工具(jenkins + maven + svn + tomcat ),我们一般会使用maven的热部署来完成发布,在部署的过程中我们开发,测试,生产 ...
- [系统集成] 部署 mesos-exporter 和 prometheus 监控 mesos task
前几天我在mesos平台上基于 cadvisor部署了 influxdb 和 grafana,用于监控 mesos 以及 docker app 运行信息,发现这套监控系统不太适合 mesos + do ...
- Map以及Set的遍历(EntrySet方法,补充enumeration和Iterator的区别)
public void mearge(Map map) { Map returnMap = new HashMap<>(); // 转换为Entry Set<Map.Entry< ...
- java编译后字节码解析
java编译后字节码解析 参考网摘: https://my.oschina.net/indestiny/blog/194260
- POSTMAN发起请求收到乱码 http 406错误
web前段异常: The resource identified by this request is only capable of generating responses with charac ...
- 评论Beta版本发布
1. 新蜂:俄罗斯方块 俄罗斯方块在完成了核心的游戏部分基础上增加了两个小功能,后续的内容还一些没完成,所以界面空出来很多板块,当前版本加入了下一个方块的预览功能,还加入了本地磁盘的排行榜.但是比起 ...