1,self encapsulate field (自封裝自段)
現象:你直接訪問乙個字段,但與字段直接的耦合關係逐漸變得笨拙
要點:為這個字段建立取值/設定函式,並且只以這些函式來訪問字段。
2,replace data value with object (以物件取代資料值)
現象:你有乙個資料項,需要與其他資料和行為一起使用才有意義
要點:將資料項變成物件。
3,change value to reference (將值物件改為引用物件)
現象:你從乙個類衍生出許多彼此相等的例項,希望將它們替換為同乙個物件
要點:將這個值物件變成引用物件。
4,change reference to value (將引用物件改為值物件)
現象:你有乙個引用物件,很小且不可變,而且不易管理
要點:將它變成乙個值物件。
5,replace array with object (以物件取代陣列)
現象:你有乙個陣列,其中的元素各自代表不同的東西
要點:以物件替換陣列。對於陣列中的每個元素,以乙個欄位來表示。
重新組織資料(一)
你直接訪問乙個字段,但是與字段之間的耦合關係逐漸變得笨拙。為這個字段建立取值 設值函式,並且只以這些函式來訪問字段。間接地通過函式訪問變數的好處是 1.子類可以通過複寫函式來改變欄位的訪問路徑 2.可以提供靈活的資料管理,如延遲初始化,資料值讀取控制,資料值範圍設定控制等。當然直接訪問欄位的好處也是...
重新組織資料
將乙個值用於多個用途,就是催生混亂與bug的溫床 1.拆分變數 如果乙個變數有多個用途,就為每個用途宣告乙個變數。還有,如果要對引數改值,也先複製乙份,對副本改值,返回副本。2.字段改名 給字段取乙個準確的名字。好的命名及資料分布,能讓別人只看類的字段就理解這些類的行為。3.以查詢取代派生變數 盡量...
重新組織資料(二)
6,duplicate observed data 複製 被監視資料 現象 你有一些領域資料置身於gui控制項中,而領域函式需要訪問這些資料 要點 將該資料複製到乙個領域物件中。建立乙個observer模式,用以同步領域物件和gui物件內的重複資料。7,change unidirectional a...