【发布时间】:2015-04-02 16:46:01
【问题描述】:
我有几个扩展BaseClass 的类。现在我想在DelegatorContext中静态定义一个活动类,每个对象的创建都应该基于活动上下文。
例子:
class BaseClass {
String firstname, lastname;
}
class FirstClas extends BaseClass {}
class SndClass extends BaseClass {}
class DelegatorContext {
public static BaseClass activeClass;
}
class Delegator {
BaseClass create(String firstname, String lastname) {
return DelegatorContext.activeClass instanceof FirstClass
? new FirstClass(firstname, lastname) : new SndClass(firstname, lastname);
}
}
如果引入更多实体以扩展 BaseClass,该示例将获得更多样板。
对于我的这类问题有更好的模式吗?甚至可能使用 Java8 和Functions?还是泛型?
我正在使用这个构造来在运行时切换实现...
【问题讨论】:
-
您可能应该使用
Class对象,而不是所需类的实际实例。但是你必须确保每个子类都有一个双字符串参数的构造函数,而你在上面的例子中没有。