工場を使用しているサンプルコードがいくつかあります。ファクトリを削除してコードをクリーンアップし、代わりに Guice を使用したいと考えています。私はこれをやろうとしましたが、小さな障害にぶつかりました。私は Guice を初めて使用するので、誰かがここで私を助けてくれることを願っています。
既存のクライアント コード (ファクトリを使用):
public class MailClient {
public static void main(String[] args) {
MailConfig config = MailConfigFactory.get();
config.setHost("smtp.gmail.com");
Mail mail = MailFactory.get(config);
mail.send();
}
}
Guice を使用してリファクタリングする私の試み:
//Replaces existing factories
public class MailModule extends AbstractModule {
@Override
protected void configure() {
bind(Mail.class)
.to(MailImpl.class);
bind(MailConfig.class)
.to(MailConfigImpl.class);
}
}
public class MailImpl implements Mail {
private final MailConfig config;
@Inject
public MailImpl(MailConfig config) {
this.config = config;
}
public void send() { ... }
}
public class MailClient {
public static void main(String[] args) {
MailModule mailModule = new MailModule();
Injector injector = Guice.createInjector(mailModule);
MailConfig config = injector.getInstance(MailConfig.class);
config.setHost("smtp.gmail.com");
Mail mail = //??
mail.send();
}
}
修正した MailClient でMailImpl
オブジェクトを使用してインスタンスを作成するにはどうすればよいですか? config
このように Guice を使用する必要がありますか?