爲了在基於Servlet的應用程序中使用,我編寫了一個類來存儲視圖名稱和要呈現的對象。實際上,它是一種數據結構,而不是OOP意義上的類。我想知道我是否應該公開這些成員,或者是否應該使用獲得者。將數據結構中的成員公開爲類?
public class Result {
private final int status;
private final String view;
private final Map<String, Object> model = new HashMap<String, Object>();
public Result(final int status, final String view) {
this.status = status;
this.view = view;
}
public Result put(final String modelName, final Object modelObject) {
model.put(modelName, modelObject);
return this;
}
}
如果我的getStatus添加(),getView()和getModel()或者我應該更改成員的可視性,以 「公」?目前,我不知道有什麼方法可以讓方法訪問成員。 「結果」是一個不可變的數據結構,當訪問成員時不需要計算。您是否會爲實施更改的不太可能發生的事件添加getter?
附錄
我讀到有關我的羅伯特·馬丁斯優秀圖書的問題Clean Code(第99頁)一節:
雜交
這種混亂[關於對象和數據結構]有時會導致 不幸的混合結構,即 半對象和半數據st ructure。 他們有做 顯著的事情功能,並且他們也有 無論是公共變量或公共 存取函數,對於所有 意圖和目的,使私人 可變公衆,誘惑等 外部函數使用這些 變量程序性程序 將使用數據結構的方式。
這樣的混合使得很難添加新的功能,但也使得難以添加新的數據結構。他們是兩個世界中最糟糕的。避免創建 他們。它們表明模糊的 設計,其作者不確定 - 或更糟,無知 - 他們是否需要保護功能或 類型。
Duplicate:http://stackoverflow.com/questions/1949351/benefits-of-getter-setter-vs-public-vars – 2010-01-02 13:16:06