利用Spring框架改进J2EE编程 - 编程入门网
erIfc接口,因此在将它们插入TemperatureSensor对象时,它们是可互换的。在需要TemperatureSensor时,系统中的某个实体必须知道要生成并与该传感器对象关联的ProtocolAdapterIfc的具体类型。在本例中,该传感器可基于命令行参数、数据库中的行或通过属性文件进行配置。本例还不足以造成挑战或展示一个复杂框架,但它足以阐明IoC基础。
但是,想象一下:在一个相当复杂的应用程序中这种情况屡屡发生,而您还希望能动态地——至少要在外部——改变对象关联。假设有一个DummyProtocolAdapter,它总是返回42这个值,使用它来进行测试。为什么不提供一个单个的统一框架?——让开发人员能够依靠该框架,以一种一致的、外部配置的方式建立类之间的关联,并且不引起工厂单元素类(factory singleton classe)的异常增加。这听起来可能没什么大不了,但它要依赖于IoC的简单性。 我们使用一个TemperatureSensor类,它与一个实现ProtocolAdapterIfc接口的类有关联。TemperatureSensor将使用该委托类来获得温度值。如UML图所示,在实现ProtocolAdapterIfc并且随后可用于该关联的应用程序中有若干个类。我们将使用IoC框架(在本例中是Spring)来声明要使用的ProtocolAdaperIfc的实现。Spring将在运行时建立关联。我们先来看XML代码,它将实例化TemperatureSensor对象并将一个ProtocolAdapterIfc实现与它关联起来。该代码如下所示:
看了这些代码之后,对于其目的就应该非常清楚了。我们配置Spring来实例化TemperatureSensor对象,并将其与RS232Adapter相关联,作为实现ProtocolAdapterIfc接口的类。若想改变已经与TemperatureSensor关联的实现,惟一需要更改的就是sensor bean标记中的class值。只要实现了ProtocolAdapterIfc接口,TemperatureSensor就不再关心关联了什么。将这应用于应用程序相当简单。我们必须先接入Spring框架,将它指向正确的配置文件,然后根据名称向Spring索取tempSensor对象的实例。下面是相应的代码:
可以看出,这些代码并不是非常难。首先是启动Spring并指定要使用的配置文件。接下来根据名称(tempSensor)引用Bean。Spring使用这样一种机制:基于simpleSensor.xml文件的描述创建该对象并与其他对象关联。它用于注入依赖性——在本例中,通过将它作为一个参数传递给sensorDelegate()方法而实例化RS232Adapter对象并将其与TemperatureSensor对象关联。 比较起来,使用编程式Java完成这一任务也不是很难。如下所示:
纯粹主义者或许会认为实际上这是更好的方法。代码行数少,并且可读性可能更强。确实如此,但这种方法的灵活性要小得多。 ◆可以随意换入和换出不同层中不同对象的不同实现。例如,若Web层中的组件需要来自新业务对象的额外的功能,您只需 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |