工厂模式在这里是正确的模式?

时间:2017-07-02 16:56:09

标签: java design-patterns

我有一个要求,即基类方法需要进一步细分。需要注册类对象。根据配置,我将决定实例化哪个类。

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.您认为还有其他方法可以实施吗?这是这种设计模式的最佳用途吗?

1 个答案:

答案 0 :(得分:1)

如果您在编译时不知道正确的类型,那么建立工厂是有意义的。

我会使用字符串作为标识符而不是整数。它使代码更容易调试,只有在紧密循环中使用工厂时,性能才会受到影响。