轻量级开发的成功秘诀,第 2 部分: 如何减轻容器
2009-11-11 00:00:00 来源:WEB开发网还有容器中的单行更改:
... Speaker speaker=new CalifornianSpeaker();
注意,您现在可以在 speaker 的两个实现之间变化,而惟一需要改变的代码就是容器。更关键的是,您可以轻松地注入模拟对象来替代真正的 Speaker 实现,并且无需影响其他的代码基就可以进行测试。
当然,最终目标是用专门定制的容器来替代这个手写容器。例如,使用 Spring 容器。在本例中,替换的是您的 Container 类,并且您可以使用类似清单 3 中代码的简单 XML 文件。
清单 3. 用于 Spring 容器的 XML 文件<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="mySpeaker" class="CanadianSpeaker">
</bean>
<bean id="consumer" class="Consumer">
<property name="speaker"><ref local=
"mySpeaker"/></property>
</bean>
</beans>
</code>
现在,您可以下载上下文,获取 Consumer bean,然后像下面这样运行它:
ApplicationContext ac =
new FileSystemXmlApplicationContext("context.xml");
Consumer c=(HelloWorld)ac.getBean("consumer");
c.saySomething();
Spring 容器与您的容器完成相同的事情。它实例化 beans,并通过设置属性而将它们绑在一起。注意,两部分代码是完全去耦的;接口和容器确保了这一点。您可以使用依赖注入来满足进行企业级开发(例如,数据源或事务管理器)所遇到的许多依赖性。
更多精彩
赞助商链接