【发布时间】:2012-09-19 09:42:09
【问题描述】:
我正在开发一个应用程序,它应该基于一条信息使用不同的类类型。为了更好地说明我的问题,我举个例子:
假设INFO 是一个布尔值。根据它的值,我的代码必须使用某个类A 或某个类B 的实例。请注意,对于每个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);
}
如果让我选择,我会选择 3 号。你说什么?
【问题讨论】:
标签: java android design-patterns