Java Google Guice嵌套辅助注入

Java Google Guice嵌套辅助注入,java,dependency-injection,guice,Java,Dependency Injection,Guice,我有一个工厂,看起来像这样: public class Factory { public Client createClient(String url) { UrlBuilder urlBuilder = new UrlBuilder(url); DefaultHttpClient httpClient = new DefaultHttpClient(); HttpProcessor processor = new Compressio

我有一个工厂,看起来像这样:

public class Factory {

    public Client createClient(String url) {
        UrlBuilder urlBuilder = new UrlBuilder(url);

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpProcessor processor = new CompressionHttpProcessor();
        httpClient.addRequestInterceptor(processor);
        httpClient.addResponseInterceptor(processor);

        return new Client(httpClient, urlBuilder);
    }
}
public class Facade {

    private Factory factory;
    private String url;

    public Facade(Factory factory) {
        this.factory = factory;
    }

    public void doStuff() {
        Client client = factory.createClient(url);
        // do stuff with client
    }

    public void setUrl(String url) {
        this.url = url;
    }
}
像这样的课程:

public class Factory {

    public Client createClient(String url) {
        UrlBuilder urlBuilder = new UrlBuilder(url);

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpProcessor processor = new CompressionHttpProcessor();
        httpClient.addRequestInterceptor(processor);
        httpClient.addResponseInterceptor(processor);

        return new Client(httpClient, urlBuilder);
    }
}
public class Facade {

    private Factory factory;
    private String url;

    public Facade(Factory factory) {
        this.factory = factory;
    }

    public void doStuff() {
        Client client = factory.createClient(url);
        // do stuff with client
    }

    public void setUrl(String url) {
        this.url = url;
    }
}
我如何正确地使用GoogleGuice来做同样的事情?我尝试了辅助注射,但我不确定如何创建“UrlBuilder”。有人能帮忙吗

Guice减轻了对工厂的需求,并在您的应用程序中使用了新技术 Java代码

您的
工厂
代码似乎违反了该原则


您可能需要重新设计facade,以便它通过注入(使用setClient)方法接收
客户机
对象。

我创建了一个保存URL的设置类,并执行了以下操作:

public MyModule extends AbstractModule {
    private final Settings settings;
    public MyModule(Settings settings) {
        this.settings = settings;
    }

    // configure

    @Provides
    private UrlBuilder createUrlBuilder(Settings settings) {
        return new UrlBuilder(settings.getUrl());
    }
}
它有点用,但我不确定我是否喜欢它