問題是關於GoF
解釋工廠模式。FactoryPattern構造物體
我有一個Tree<SqlRestriction>
其中
public interface SqlRestriction{
public String getSql();
}
現在,我需要創建一個名爲集裝箱接口的對象:
public interface Container{
//methods
}
下面是其實現的一個:
public class SimpleSqlListContainer implements Container{
private Integer rate;
private String relation;
//GET, SET, CTORs, other methods
}
所以,我傾向於將對象創作包裝到工廠
public class ContainerFactory{
public Container create(Tree<SqlRestriction> restrinctions){
//impl
}
}
實際的創建以及正確初始化要通過遍歷作爲參數傳遞的Tree
進行。
問題:如果我初始化它會被認爲是好是被工廠方法中創建的對象。或者它可能會誤導其他開發者?因此,在工廠方法中,我們是否應該避免任何形式的初始化,並只執行對象創建,將初始化留給客戶端。
目前還不清楚構建和初始化之間有什麼不同。兩者通常應由構造函數完成。一般來說,構建的對象應該可以使用。最重要的是如果文件:明確工廠做什麼並返回。 –
@JBNizet但是在JavaBean中,我們通常使用deafult構造函數,它通常具有空的body和getter/setter? –
並非所有東西都應該是JavaBean。即使JavaBean具有無參數構造函數,它也應該是(並且通常)可用而不必調用任何setter。 –