Encapsulate Field (封裝字段)

Summary 你的類中存在一個public字段。 將它聲明爲private,並提供相應的訪問函數。
模塊化

動機:函數

  面向對象的首要原則之一就是封裝,或者成爲「數據隱藏」。按此原則,你毫不應該將數據聲明爲public,不然其餘對象就有可能訪問甚至修改這項數據,而擁有該數據的對象卻毫無察覺。因而,數據和行爲就被分開了這可不是件好事。測試

數據聲明爲public被看作是一種很差的作法,由於這樣會下降程序的模塊化程度。數據和使用該數據的行爲若是集中在一塊兒,一旦狀況發生變化,代碼的修改就會比較簡單,由於須要修改的代碼都集中於同一塊地方,而不是星羅棋佈地散落在整個程序中。spa

Encapsulate Field是封裝過程的第一步。經過這項重構手法,你能夠將數據隱藏起來,並提供相應的訪問函數。但它畢竟只是第一步。若是一個類除了訪問函數外不能提供其餘行爲,它終究只是一個啞吧類。這樣的類並不能享受對象技術帶來的好處。而你知道,浪費任何一個對象都是很很差的。實施Encapsulate Field以後,我會嘗試尋找用到新建訪問函數的代碼,看看是否能夠經過簡單的Move Method輕快地將它們移到新對象去。對象

作法:編譯

1.public字段提供取值/設值函數。重構

2.找到這個類之外使用該字段的全部地點。若是客戶只是讀取該字段,就把引用替換爲對取值函數的調用;若是客戶修改了該字段值,就將此引用點替換爲對設值函數的調用。引用

à若是這個字段是個對象,而客戶只不過是調用該對象的某個函數,那麼不管該函數是否改變對象狀態,都只能算是讀取該字段,只有當客戶爲該字段賦值時,才能將其替換爲設值函數。程序

3.每次修改以後,編譯並測試。im

4.將字段的全部用戶修改完畢後,把字段聲明爲private

5.編譯,測試。

相關文章
相關標籤/搜索