快速业务通道

在Eclipse RCP中实现反转控制(IoC) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
rvice Locator将客户和服务绑定到一起。FortuneInterface只定义了公共接口 IFortuneCookie,客户可以用它访问cookie消息:

public interface IFortuneCookie { public String getMessage(); }

FortuneService提供了一个简单的服务工厂,用于创建IFortuneCookie的实现:

public class FortuneServiceFactory implements IServiceFactory { public Object getServiceInstance() throws ServiceException { return new FortuneCookieImpl(); } // ... omissis ... }

工厂注册到service locator插件的扩展点,在plugin.xml文件:

<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin> <extension point="com.onjava.servicelocator.servicefactory"> <serviceFactory class="com.onjava.fortuneservice.FortuneServiceFactory" id="com.onjava.fortuneservice.FortuneServiceFactory" name="Fortune Service Factory" resourceClass="com.onjava.fortuneservice.IFortuneCookie"/> </extension> </plugin>

resourceClass属性定义了该工厂所提供的服务的类。在FortuneClient插件中, Eclipse视图使用该服务:

@Serviceable public class View extends ViewPart { public static final String ID = "FortuneClient.view"; private IFortuneCookie cookie; @Injected(optional = false) public void setDate(IFortuneCookie cookie) { this.cookie = cookie; } public void createPartControl(Composite parent) { Label l = new Label(parent, SWT.WRAP); l.setText("Your fortune cookie is:\n" + cookie.getMessage()); } public void setFocus() { } }

注意这里出现了Serviceable和Injected注释,用于定义依赖的外部服务,并且没有引用任何服务代码。最终结果是,createPartControl() 可以自由地使用cookie对象,可以确保它被正确地初始化。示例程序如图3所示

在Eclipse RCP中实现反转控制(IoC) - 编程入门网

图3. 示例程序

结论

本文我讨论了如何结合使用一个强大的编程模式--它简化了代码依赖的处理(反转控制),与Java客户端程序(Eclipse RCP)。即使我没有处理影响这个问题的更多细节,我已经演示了一个简单的应用程序的服务和客户是如何解耦的。我还描述了当开发客户和服务时, Eclipse插件技术是如何实现关注分离的。然而,还有许多有趣的因素仍然需要去探究,例如,当服务不再需要时的清理策略,或使用mock-up服务对客户端插件进行单元测试,这些问题我将留给读者去思考。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号