2014-01-21 84 views
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(); 

有沒有更好的辦法?任何建議,將不勝感激。

+0

所以你只是想叫'特定'HelperBase'子類的static'方法? –

+0

@Rohit Jain,是的。但我希望幫助者實現一個標記接口,或者擴展一個抽象基類。 – thelost

+0

你爲什麼要這樣? –

回答

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()