反转控制容器和依赖注入模式

反转控制容器和依赖注入模式

ID:34749265

大小:212.15 KB

页数:18页

时间:2019-03-10

反转控制容器和依赖注入模式_第1页
反转控制容器和依赖注入模式_第2页
反转控制容器和依赖注入模式_第3页
反转控制容器和依赖注入模式_第4页
反转控制容器和依赖注入模式_第5页
资源描述:

《反转控制容器和依赖注入模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、反转控制容器和依赖注入模式在Java社区有繁忙,有助于从不同的项目组装成一个有凝聚力的应用组件的轻量级容器。这些容器的背后,是他们的表现如何接线,非常通用名称下的“控制反转”是指一个概念,他们的一个共同的模式。在这篇文章中,我这种模式是如何工作的深入,更具体的名称下的“依赖注入”,对比与服务定位器替代。它们之间的选择是小于配置与使用分离的原则的重要。2004年1月23日马丁福勒翻译:中国葡萄牙法国意大利罗马尼亚标签:流行·设计·对象的协同设计·应用架构内容§组件和服务§一个天真的例子§控制反转依赖注入的形式o与PicoContainer的构造器注入o与Spring的sett

2、er注入o接口注入使用服务定位器o使用定位器的隔离接口o动态服务定位器o使用Avalon的同时定位和注射决定要使用的选项o服务定位器和依赖注入o构造与setter注入o代码或配置文件o从使用分离配置§一些进一步的问题§结论性的思考关于企业Java世界的有趣的事情之一,是在建设的主流J2EE技术的替代品的大量活动,其中大部分发生在开源。很多这是一个在主流的J2EE世界重量级复杂的反应,但它也正在研究替代品和创意。处理一个共同的问题是如何连接在一起的不同元素:你怎么结合在一起的网络控制器架构,数据库接口支持时,他们建立由不同团队的的框架other.A数量每个小知识已刺伤在这个问

3、题上,有几个分支,提供一般的能力,从不同层次的组件组装。这些通常被称为轻量级容器的例子包括PicoContainer的,和Spring。相关这些容器是一些有趣的设计原则,去超越这些具体的容器,确实是Java平台的事情,。在这里,我要开始探索其中的一些原则。我使用的例子是在Java中,但也同样适用于其他面向对象的环境,特别是最喜欢我的写作原则。net。组件和服务布线元素的主题一起拉着我几乎立刻进入棘手的术语问题,围绕服务和组件的条款。你会发现这些东西轻松的定义上的长期和矛盾的文章。对于我而言这里是我目前使用这些重载的条款。我使用的组件要使用的,没有改变的应用程序是控制组件作家

4、,这意味着软件的glob。由“没有改变”我的意思是不会改变使用的应用程序组件的源代码,虽然他们可能会通过扩展在组件作家所允许的方式,它改变组件的行为。服务是相似的,它是由外国申请使用的组件。主要区别是,我希望在本地使用一个组件(认为jar文件,装配,DLL,或源进口)。服务将通过一些远程接口,无论是同步还是异步远程使用(如Web服务,邮件系统的RPC,或插座。)在这篇文章中,我主要使用的服务,但很多相同的逻辑可以适用于本地组件。事实上你往往需要某种本地组件框架,可以方便地访问远程服务。但写“组件服务”累人的读取和写入,和服务的时刻,更时尚。一个天真的例子为了帮助更具体,我将

5、使用一个运行的例子,谈论这一切。像我所有的例子是那些超级简单的例子之一,小到足以是不真实的,但希望你想象发生了什么事情没有落入一个真实的例子沼泽。在这个例子中,我写的一个组件,它提供了一个由一个特定的导演执导的电影列表。这个惊人的有用的功能,实现由单一的方法。classMovieLister...publicMovie[]moviesDirectedBy(Stringarg){ListallMovies=finder.findAll();for(Iteratorit=allMovies.iterator();it.hasNext();){Moviemovie=(Movie)

6、it.next();if(!movie.getDirector().equals(arg))it.remove();}return(Movie[])allMovies.toArray(newMovie[allMovies.size()]);}此功能的实现是在极端的天真,它要求一个finder对象(我们将在某一时刻)返回它知道每部电影。那么它只是狩猎返回由一个特定的导演执导的,通过这个列表。这一块特别的幼稚,我不打算修复,因为它只是这篇文章的真正的脚手架。这篇文章的真正的问题是这个取景器的对象,尤其是如何连接对象与特定的Finder对象的李斯特。之所以出现这种有趣的是,是,我

7、想我的精彩moviesDirectedBy方法到是完全独立于所有的电影是如何被存储。因此,所有的方法,是指一个发现者,所有发现者不知道该如何应对findAll方法。我可以把这个定义取景器接口。publicinterfaceMovieFinder{ListfindAll();}现在,这一切都是很好的分离,但在某些时候,我要拿出一个具体的类,实际上电影。在这种情况下,我把这一在我利斯特类的构造函数的代码。classMovieLister...privateMovieFinderfinder;publicMovieLis

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。