2012-07-02 86 views
0

我要在Java中實現工廠模式。我有一個地圖就像一個工廠 HashMap的,我想補充所有具體的實現我的選擇的關鍵。密鑰由MyAbstract claass中的抽象方法getImplName()定義。工廠定製模式實現

我的要求是,當有人延伸MyAbstractClass並限定getImplName()中,密鑰值對必須被自動添加到工廠的地圖,而不是其中手動執行此代碼。這可能嗎 ?我正在考慮使用自定義註釋。讓我知道你的建議

+0

不,不是真的有可能你所描述的方式。你不能強迫子類去做任何事情。除了工廠之外,您可能更喜歡使用依賴注入或其他東西。 –

回答

2

在你的抽象類的構造函數,你應該能夠調用getImplName(),並把它添加到您的地圖(假設有一個稱爲地圖的情況下,否則,將需要傳遞的) 。

或者你可以在你的構造方法來在您需要的值添加參數。

0

有在工廠元素是否應該承認工廠方法的辯論。
我會建議,如果您想您的要素識別工廠下面的辦法:

public abstract class MyAbstractClass { 
    public MyAbstractClass(MyFactory factory) { 
     factory.addElement(getImplName(),this); 
    } 

    public abstract String getImplName(); 
} 

public class MyTestClass extends MyAbstractClass { 
    public MyTestClass(MyFactory factory) { 
    super(factory); 
    } 
} 

凡MyFactory是一個工廠,有一個HashMap作爲內場
這種方式延伸MyAbstractClass程序員被強制提供一個CTOR,通過調用超類CTOR將該類的對象添加到工廠。