在Eclipse RCP中实现反转掌握(IoC)[Java编程]
本文“在Eclipse RCP中实现反转掌握(IoC)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Eclipse富客户平台(RCP)是一个功效强盛的软件平台,它基于插件间的互连与合作,答应开辟人员构建通用的利用程序.RCP使开辟人员可以集合精神举行利用程序业务代码的开辟,而不需求耗费时间重新创造轮子编写利用程序管理的逻辑.
反转掌握(Inversion of Control, IoC)和依靠注入(Dependency Injection, DI)是两种编程情势,可用于削减程序间的耦合.它们遵守一个简单的原则:你不要成立你的对象;你描写它们该当若何被成立.你不要实例化你的部件所需求对象或直接定位你的部件所需求的服务;相反,你描写哪个部件需求哪些服务,别的人(普通是一个容器)负责将它们衔接到一同.这也被认为是好莱坞法例:don't call us--we'll call you.
本文将描写一个简单的方法在Eclipse RCP利用程序中利用依靠注入.为了避免污染Eclipse 平台的底子构造以及透明地在RCP之上增添IoC框架,我们将结合利用运行时字节码操作技术(利用 ObjectWeb ASM库)、Java类加载代理(利用java.lang.instrument包)以及Java annotation.
什么是Eclipse富客户平台?
用一句话来说,富客户平台是一个类库、软件框架的调集,它是一个用于构建单机和连网利用程序的运行时环境.
固然Eclipse被认为是构建集成开辟环境(IDE)的框架,从3.0开始,Eclipse整个产品举行了重构,分割成各种差别的部件,它些部件可以用于构建肆意的利用程序.此中的一个子集构成了富客户平台,它包含以下元素:基本的运行时环境、用户界面组件(SWT和JFace)、插件以及 OSGI层.图1显示了Eclipse平台的主要部件.
图1. Eclipse平台的主要部件
整个Eclipse平台是基于插件和扩大点.一个插件是一个可以独立开辟和公布的最小的功效单元.它普通打包成一个jar文件,通过增添功效(比方,一个编辑器、一个工具栏按钮、或一个编译器)来扩大平台.整个平台是一个彼此衔接和通信的插件的调集.一个扩大点是一个彼此衔接的端点,别的插件可以用它供应额外的功效(在Eclipse中称为扩大).扩大和扩大点定义在XML配置文件中,XML文件与插件捆绑在一同.
插件情势加强了关注别离的概念,插件间的强衔接和通讯需求通过配线举行设置它们之间的依靠.典型的例子源自需求定位利用程序所需求的单子服务,比方数据库衔接池、日记处理或用户保存的首选项.反转掌握和依靠注入是消除这种依靠的可行办理筹划.
反转掌握和依靠注入
反转掌握是一种编程情势,它关注服务(或利用程序部件)是若何定义的以及他们应当若何定位他们依靠的别的服务.普通,通过一个容器或定位框架来得到定义和定位的别离,容器或定位框架负责:
保存可用服务的调集
供应一种方法将各种部件与它们依靠的服务绑定在一同
为利用程序代码供应一种方法来恳求已配置的对象(比方,一个全部依靠都满意的对象), 这种方法可以确保该对象需求的全部相关的服务都可用.
现有的框架实际上利用以下三种基本技术的框架履行服务和部件间的绑定:
范例1 (基于接口): 可服务的对象需求实现一个专门的接口,该接口供应了一个对象,可以从用这个对象查找依靠(别的服务).早期的容器Excalibur利用这种情势.
范例2 (基于setter): 通过JavaBean的属性(setter办法)为可服务对象指定服务.HiveMind和Spring采取这种方法.
范例3 (基于构造函数): 通过构造函数的参数为可服务对象指定服务.PicoContainer只利用这种方法.HiveMind和Spring也利用这种方法.
我们将采取第二种方法的一个变种,通过标志方法来供应服务(下面示例程序的源代码可以在资源部份得到).声明一个依靠可以表示为:
@Injected public void aServicingMethod(Service s1, AnotherService s2) {
// 将s1和s2保存到类变量,需求时可以利用
}
以上是“在Eclipse RCP中实现反转掌握(IoC)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |