最近几天在 研究容器。发现有几个理念需要理一下。细一看,又发现根本就是我们之前学过的东西。控制反转(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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。