Guice指南-手工依赖注入
上一篇 /
下一篇 2008-03-21 17:18:17
/ 个人分类:Guice
手工依赖注入
依赖注入模式的目标之一是使单元测试更简单。我们不需要特殊的框架就可以实践依赖注入模式。依靠手工编写代码,你可以得到该模式大约80%的好处。
当上例中的客户代码向工厂对象请求一个服务时,根据依赖注入模式,客户代码希望它所依赖的对象实例可以被传入自己。也就是说:不要调用我,我会调用你。
public class Client {
private final Service service;
public Client(Service service) {
this.service = service;
}
public void go() {
service.go();
}
}
这让我们的单元测试简化了不少。我们可以只传入一个伪服务对象,在结束后也不需要多做什么。
public void testClient() {
MockService mock = new MockService();
Client client = new Client(mock);
client.go();
assertTrue(mock.isGone());
}
我们也可以精确地区分出客户代码依赖的API。
现在,我们如何连接客户和服务对象呢?手工实现依赖注入的时候,我们可以将所有依赖逻辑都移动到工厂类中。也就是说,我们还需要有一个工厂类来创建客户对象。
public static class ClientFactory {
private ClientFactory() {}
public static Client getInstance() {
Service service = ServiceFactory.getInstance();
return new Client(service);
}
}
手工实现依赖注入需要的代码行数和简单工厂模式差不多。
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: