控制反转(IoC)与依赖注入(DI)
来源:互联网 发布:apache shirt session 编辑:程序博客网 时间:2024/04/30 15:32
最近几天在 研究容器。发现有几个理念需要理一下。细一看,又发现根本就是我们之前学过的东西。控制反转(IoC)与依赖注入(DI)。这两个概念有很多相同的内容,只不过是侧重不相同。
控制反转
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。
更通俗的说,就是本来你该做的事情 你不去做了 让系统去做。
我们举一个例子来说明,皇上生病了传御医。以前的做法是,皇上想叫哪一个大臣直接传旨召XX御医。而现在的做法就是这之间有了一个爱妃团。皇上只告诉爱妃团召御医。但是具体召哪一个御医,是由娘娘团决定的。很明显,整个事件的控制权掌握在了娘娘团手里。也就是我们说的控制反转(ICO)。
Demo
①皇上直接传御医
<span style="font-size:18px;">namespace DemoFactory{ public interface IDoctor//医生接口 { void GiveMedicine();//拿药 } public class Doctor : IDoctor { public void GiveMedicine() { Console.WriteLine("中草药"); } }}namespace SpringNewIoC { class Program { private static void NormalMethod() { IDoctor doc = new IDoctor(); doc.GiveMedicine(); Console.WriteLine("我是皇上叫过来的御医"); } }}</span>
这样的话,我们通过“IDoctor doc=new IDoctor() “ 可知皇上一定要知道具体某个御医。
②皇上通过爱妃团传御医。
<span style="font-size:18px;">namespace DaoFactory{ public static class wife { public static IDoctor CallDoctor() { return new Doctor(); }}namespace SpringNetIoC { class Program { private static void FactoryMethod() { IDoctor doc = wife.CallDoctor(); doc.GiveMedicine(); Console.WriteLine("我是娘娘团叫过来的御医"); } } }}</span>
有人说它是一种概念,也有人认为是一种设计模式。
那么依赖注入是什么意思呢?还是皇上通过娘娘叫御医。对爱妃团来说,她们把御医带给皇上。就相当于娘娘团把御医“注入”给皇上。
说到这大家千万不要觉得陌生,我们之前在设计模式的时候,这些都是已经接触过的。其实我上面写的demo 就是之前学过的一个简单的工厂方法而已。
此外,看网上的博客,他们实现IOC是通过配置文件来实现的。如下
<span style="font-size:18px;"><object id="Doctor" type="Dao.Doctor,Dao"/></objects></span>
<span style="font-size:18px;">private static void IoCMethod() { IApplicationContext ctx = ContextRegistry.GetContext(); IPersonDao dao = ctx.GetObject("Doctor") as IDoctor; if (dao != null) { dao.Save(); Console.WriteLine("我是IoC方法"); } }</span>
0 0
- 控制反转(IoC)与依赖注入(DI)
- 控制反转IOC与依赖注入DI
- 控制反转(IoC)与依赖注入(DI)
- 控制反转IOC与依赖注入DI
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 控制反转与依赖注入--IoC/DI
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 控制反转(IoC)与依赖注入(DI)
- 控制反转IOC与依赖注入DI
- 控制反转(IoC)与依赖注入(DI)
- 控制反转IOC与依赖注入DI
- 匹配 (图论)
- Swift与Objective-C API交互(三)
- WP8移植到wp8.1中一些常用小技巧
- 流对象不能直接做参数传递
- VMware 11安装Mac OS X 10.10
- 控制反转(IoC)与依赖注入(DI)
- 二级web程序设计选择题(个人心得与总结)(1)
- Android实习生-阿里巴巴面试记录
- 容器stl——multiset(集合中可以有重复的值) ny55懒省事的小明
- 计算机网络笔记
- 任务分配问题
- 简单递归题,核反应堆中有α和β两种粒子...
- 提升团队编码效率的10个提示
- 《Effective C++》:条款43:学习处理模板化基类内的名称