以下に示すような、1つのインターフェースが複数の親インターフェースを拡張し、そのインターフェースを1つ実装したデザインがあります。私のクライアントクラスで複数のインターフェースをGuiceの1つのimplに自動的にバインドする
私は一つ以上の親インターフェースのではなく、ZooKeeperClient
に依存します。私はクライアントクラスの依存関係の表面積を減らすので、これがより優れた設計であると感じています。また、テストでモックを簡単にすることもできます。
@Inject
public Foo(ServiceUpdater su) {
// ...
}
はしかし、これを達成するために、私は手動で実装クラスへの各インタフェースからバインディングを追加する必要があります。
bind(ServiceCreator.class).to(ZooKeeperClientImpl.class)
bind(ServiceDeleter.class).to(ZooKeeperClientImpl.class)
bind(ServiceUpdater.class).to(ZooKeeperClientImpl.class)
// ...
bind(ZooKeeperClient.class).to(ZooKeeperClientImpl.class)
は、私はこの繰り返しを回避し、バインドするのGuiceを伝えることができる方法はあります階層全体を一度に?何かが好きです...
bind(ZooKeeperClient.class/* and its parents*/).to(ZooKeeperClient.class)
ここに私のデザインに何か問題がありますか?私は何かをしていますか?
確認とリンクをありがとう。 –