0

次のような工場があります。

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;
    }
}

Google Guice を適切に使用して同じことを行うにはどうすればよいですか? アシスト インジェクションを試しましたが、「UrlBuilder」をどのように作成するのかわかりません。誰でも助けることができますか?

4

2 に答える 2

0

Guice は、ファクトリの必要性と、Java コードでの new の使用を軽減します。

あなたのfactoryコードはその原則に違反しているようです。

インジェクション (setClient を使用) メソッドを介してオブジェクトを受け取るように、ファサードを再設計することができます。client

于 2012-06-16T16:59:37.373 に答える