2015-03-02 116 views
1

該抽象類我有如何使用構建器模式構建抽象類?

public abstract class AbstractActionModel implements IActionModel{ 
    public abstract void getModel(); 
    public abstract void getAction(); 
} 

然後,我想用這個抽象類象下面這樣:

this.getActions().put("sth", AbstractActionModel.builder().action("sth").build()); 

既然不能實例化一個抽象類生成器模式不會幹活不要」不知道這樣做的任何替代模式。

注意:我也沒有從這個基類擴展類的知識。

+0

你想如何選擇要創建哪個具體的子類? – DNA 2015-03-02 13:05:12

+0

看看這裏http://stackoverflow.com/questions/25909701/generic-builder-pattern-class-using-reflection – user902383 2015-03-02 13:06:37

回答

2

如果你想編寫一個不知道具體子類的構建器,你的代碼的調用者將不得不提供關於要創建哪個子類的信息 - 要麼提供一個實際的類對象,要麼註冊一組具有名稱的類。例如:

​​

注意,抽象類需要setter方法加入,從而使製造商可以在不知道具體子類更新屬性。

或者,您可以使用reflection來檢查子類並調用其方法。

+0

所以沒有靜態的方式來做到這一點?像這樣AbstractActionModel.builder()? – armin 2015-03-03 04:51:11

+0

不是沒有提供具體的課程或獲得一個方法 - 如果你不知道它是什麼,你如何構建一些東西? – DNA 2015-03-03 08:43:28