我有一个要求,即基类方法需要进一步细分。需要注册类对象。根据配置,我将决定实例化哪个类。
class Base {
Base () { }
void methodOverride() { // do something; }
}
class Derived1 extends Base {
Derived1 () {
super();
}
void methodOverride() { // specialize }
}
class Derived2 extends Base {
Derived2 () {
super();
}
void methodOverride() { // specialize }
}
class SelectorFactory {
Base createClass( int type) {
switch (type) {
case DERIVED_1:
return new Derived1();
case DERIVED_2:
return new Derived2();
case BASE:
return new Base();
}
}
}
public static void main(String[] args){
// read configuration
int type = config.getIntType();
SelectorFactory factory = new SelectorFactory();
someRegisterMethod( factory.createClass(type) );
}
问题: 1.您认为还有其他方法可以实施吗?这是这种设计模式的最佳用途吗?
答案 0 :(得分:1)
如果您在编译时不知道正确的类型,那么建立工厂是有意义的。
我会使用字符串作为标识符而不是整数。它使代码更容易调试,只有在紧密循环中使用工厂时,性能才会受到影响。