1

我有几个? extends HelperBase只有公共静态方法的助手类 ()。我想拥有类似于工厂的东西(支持单例),但由于不需要实例,我不确定哪种方式最好。

最后,我想要类似的东西:

enum HELPER_TYPE {
    Type_A
}

abstract class HelperBase {
    abstract void do();

    static HelperBase getHelper(HELPER_TYPE type) {
    // ...
    }
}

class Helper1 extends HelperBase {
    static void doImpl() {
    // ... impl here
    }

    void do() {
        doImpl();
    }
}

// ... and then:

HelperBase helper = HelperBase.getHelper(HELPER_TYPE.Type_A);
helper.do();

有没有更好的办法 ?任何建议将不胜感激。

4

1 回答 1

1
enum HELPER_TYPE implements IHelper{
    Type_A{
        @Override
        public void doSomething(){

        }
    },
    Type_B{
       @Override
       public void doSomething(){
       }
    }
}

interface IHelper{
    public void doSomething();
}

拥有一个带有所需方法的接口并enum实现它怎么样?

IHelper现在你在所有实现接口的助手中都有了多态行为。

所以你可以这样称呼他们HELPER_TYPE.Type_A.doSomething()

于 2014-01-21T11:51:47.740 回答