Encapsulate Field 封裝值域

2021-04-24 17:38:10 字數 1149 閱讀 7761

你的class中存在乙個public值域.

將它宣告為private,並提供相應的訪問函式(accessors).

public string _name

private string _name;

public string getname()

public void setname(string arg)

動機物件導向的首要原則之一就是封裝(encapsulation),或者稱為[資料隱藏](data hidding).

public資料被看做是一種不好的作法,因為這樣會降低程式的模組化程度(modularity).如果資料和使用該資料的行為被集中在一起,一旦情況發生變化,**的修改就會比較簡單,因為需要修改的**都集中於同一塊地方,而不是星羅棋布地散落在整個程式中.

encapsulate field(206)是封裝過程的第一步.通過這項重構手法,你可以將資料隱藏起來,並提供相應的訪問函式(accessors).但它畢竟只是第一步.如果乙個class除了訪問函式(accessors)外不能提供其他行為,它終究只是乙個dumb class(啞類).這樣的class並不能獲得物件技術的優勢,而你知道,浪費如何乙個物件都是很不好的.實施encapsulate field(206)之後,我會嘗試尋找那些使用[新建訪問函式]的函式,看看是否可以通過簡單的move method(142)輕快地將它們移到新物件去.

作法1. 為public值域提供取值/設值函式(getter/setter).

2. 找到這個class以外使用該值域的所有地點.如果客戶只是使用該值域,就把引用動作(reference)替換為對取值函式(getter)的呼叫];如果客戶修改了該值值域,就將此一引用點替換為[對設值函式(setter)的呼叫].

如果這個值域是個物件,而客戶只不過是呼叫該物件的某個函式,那麼不論該函式是否為修改函式(modifier,會改變物件狀態),都只能算是使用該值域.只有當客戶為該值域賦值時,才能將其替換為設值函式(setter).

3. 每次修改之後,編譯並測試.

4. 將值域的所有使用者修改完畢後,把值域宣告為private.

5. 編譯,測試.

WebUtils封裝返回值

在專案會有一些請求來規定返回值給前台,一般封裝個jsonobject物件即可,主要包括 code code,msg message,data data三個字段 主要有成功和出錯的兩種情況,這裡我們可以封裝乙個responseenum列舉類專門用於錯誤 和錯誤資訊提示 如下類public enum r...

php檔案上傳值函式封裝

筆記 函式的功能 上傳檔案 條件進行判斷a 1.檔案型別?2.檔案儲存到什麼位置?3.檔案格式限制?字尾名 4.檔案大小限制?結果 實現檔案上傳 1.結構能夠看到 記錄檔案路徑和名字都要返回 2.失敗?返回false,顯示錯誤原因 開始實現 1.獲取檔案五元素,分別傳入函式中 2.先判斷檔案是否有效...

函式返回值和封裝

需要用到函式內部的變數或者是函式的時候需要使用return 進行資料返回 函式返回值 return 可以將函式內部的變數或函式返回到函式外面去使用 語法 return 需要返回的內容 特點 return 一次只能返回乙個,寫多個最後只會返回最後乙個 函式中只要遇到return函式就結束了 retur...