ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Guice指南-手工依赖注入

Guice指南-手工依赖注入

原创 Linux操作系统 作者:梧桐雨—168 时间:2008-03-21 17:18:17 0 删除 编辑
手工依赖注入
依赖注入模式的目标之一是使单元测试更简单。我们不需要特殊的框架就可以实践依赖注入模式。依靠手工编写代码,你可以得到该模式大约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);
  }
}
手工实现依赖注入需要的代码行数和简单工厂模式差不多。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13270562/viewspace-214952/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-28

  • 博文量
    141
  • 访问量
    402091