1 つの情報に基づいて異なるクラス タイプを使用するアプリケーションを開発しています。私の質問をよりよく説明するために、例を挙げましょう。
INFO
はブール値であると仮定します。その値に基づいて、コードは一部のクラスA
または一部のクラスのインスタンスを使用する必要がありますB
。for everyはそのサブクラスA
であることに注意してください。アプリケーションの起動時に設定され、アプリのライフサイクルを通じて変更されません。B
INFO
私の質問:これを実装する最適な方法は何ですか?
ここに私が思いついたいくつかのアプローチがありますが、他のアプローチを自由に提案してください。
1. メソッドを持つファクトリ クラス:
public static A getA(final boolean INFO) {
return INFO ? new A() : new B();
}
2. ラッパー クラス:
class WrapperForSomeClass {
public final A instance;
public WrapperForSomeClass(final boolean INFO) {
instance = INFO ? new A() : new B();
}
}
3. インターフェイス + ファクトリ クラス:
public interface IWrappable<T> {
T get(final boolean INFO);
}
private static final IWrappable<A> WRAPPER_FOR_A = new IWrappable<A>() {
public A get(final boolean INFO) {
return INFO ? new A() : new B();
}
};
public static A getA(final boolean INFO) {
return WRAPPER_FOR_A.get(INFO);
}
どちらかを選ばなければならないとしたら、私はNo.3を選びます。何て言う?