副标题#e#
上次的博客深入浅出Spring(一)Spring概述中,我给各人简朴先容了一下Spring相关观念。重点是这么一句:Spring是为了办理企业应用开拓的巨大性而建设的一个轻量级的节制反转(IoC)和面向切面(AOP)的容器框架。在这句话中重点有两个,一个是IoC,另一个是AOP。本日我们讲第一个IoC。
IoC观念
节制反转(Inversion of Control)是一个重要的面向工具编程的法例来削减计较机措施的耦合问题。 它尚有一个名字叫做依赖注入(Dependency Injection)。IoC不是什么技能,它是一种设计模式。
实例演示
为了更好的说明IoC,我为各人举一个简朴的例子,如有这样一个描写:某公司新创立了一个项目组,项目组有若干成员和一个项目组长,项目组创立后第一次开会上,作为项目组长的小李凭据老例首先做了简短的自我先容。
按照上述的描写,假如我们写出如下代码和类图:
public class Li { public void introduce() { System.out.println("各人好,我是小李"); } } public class Team { public void firstMeeting() { Li li = new Li(); li.introduce(); } }
详细类图如下:
上述的代码,应该说根基完成了相关的需求,可是仔细思量之后就会发明,上述的代码是按照详细的场景描写举办的,并没有举办抽象,这样就导致我们不能机动的布置项目组长去做开场,即按照此刻的代码,开场自我先容被绑定给了小李而不能布置给其他人。为了办理上述的问题,我们引入首先引入Leader接口,相关代码和类图如下:
public interface Leader { public void introduce(); } public class Li implements Leader { @Override public void introduce() { System.out.println("各人好,我是小李"); } } public class Team { public void firstMeeting() { Leader li = new Li(); li.introduce(); } }
详细类图如下:
URL:http://www.bianceng.cn/Programming/Java/201410/45836.htm
#p#副标题#e#
固然上述的代码可以让我们布置给其他成员开场,可是我们可以看出Team类同时依赖Leader接口和Li类,并没有到达我们所期望的Team仅仅依赖于Leader接口的目标,如何办理这个问题呢?虽然是引入Boss,由Boss抉择详细由谁接受项目组长。详细类图和代码如下:
public interface Leader { public void introduce(); } public class Li implements Leader { @Override public void introduce() { System.out.println("各人好,我是小李"); } } public class Team { public void firstMetting(Leader leader){ leader.introduce(); } } public class Boss { public void direct(){ Leader leader = new Li(); Team team = new Team(); team.firstMetting(leader); } }
详细类图如下:
通过以上代码和图示,我们可以看出,通过引入老板类,我们将项目小组和详细由谁接受项目组上举办解耦。
对应上述例子,我们再来讲授一下IoC,IoC从字面上看分为节制和反转,节制在上面的实例中就是详细由谁接受项目组长,而反转就是将抉择谁接受项目组长转移到Boss类中。通俗领略就是将接口的详细实现类(Li)的节制权从挪用类(Team)中疏散转交给第三方(Boss)抉择。
到此为止,IoC的观念我们就已经讲完了,详细Spring中如何实现呢?这比及我们之后的针对Spring实例再给各人具体表明。本次各人只要知道IoC相关观念和实现思路即可。
出处:http://www.cnblogs.com/zs234/