重構摘要8 重新組織資料

2021-06-22 08:12:28 字數 852 閱讀 8336

你直接訪問乙個字段,但與字段之間的耦合關係逐漸變得笨拙。

為這個字段建立取值/設定函式,並且只以這些函式來訪問字段。

子類用超類資料時

你有乙個資料項,需要與其他資料和行為一起使用才有意義

值物件應該是不可修改內容的

你從乙個類衍生出許多彼此相等的例項,希望將它們替換為同乙個物件

你有乙個引用物件,很小且不可變,而且不易管理

你有乙個陣列,其中的元素各自代表不同的東西

你有一些領域資料置身與gui控制項中,而領域函式需要訪問這些資料。

將該資料複製到乙個領域物件中。建立乙個observer模式,用以同步領域物件和gui物件內的重複資料。

兩個類都需要使用對方特性,但其間只有一條單向連線

單向可以將所有關聯關係的邏輯集中安置於一地。

兩個類之間有雙向關聯,但其中乙個類如今不再需要另乙個類的特性。

雙向關聯的弊病: 維護複雜的建立 刪除 以及殭屍物件 高耦合

你有乙個字面數值,帶有特別含義

建立乙個常量,根據其意義為它命名,並將上述的字面數值替換為這個常量。

有乙個函式返回乙個集合

讓這個函式返回該集合的乙個唯讀副本,並在這個類中提供新增/移除集合元素的函式。

你需要面對傳統程式設計環境中的記錄結構

為該記錄建立乙個「啞」資料物件

類之中有乙個數值型別碼,但它並不影響類的行為

以乙個新的類替換該數值型別碼

你有乙個不可變的型別碼,它會影響類的行為。

型別碼影響類行為,且無法通過繼承手法消除它。

以狀態物件取代型別碼

各個子類的唯一差別只在「返回常量資料」的函式身上。

修改這些函式,使他們返回超類中的某個(新增)字段

重構 重新組織資料

1 self encapsulate field 自封裝字段 為這個字段建立取值 設定函式,且只通過這個函式訪問該欄位。2 replace data value with object 以物件取代資料值 有乙個資料項,需要與其他資料和行為一起使用才有意義。將資料項變成物件。3 change valu...

05 重構 重新組織資料

一 self encapsulate field 自封裝字段 直接訪問乙個字段,與該字段之間的耦合關係將會逐漸變得笨拙。為該字段建立取值 設值函式,並且只以這些函式來訪問字段。二 replace data value with object 以物件取代資料值 有乙個資料項,需要與其他資料和行為一起使...

重構之重新組織資料

一.自封裝字段 你直接訪問乙個字段,但與字段之間的耦合關係逐漸變得笨拙。為這個字段建立取值 設值函式,並且只以這些函式來訪問字段。在字段訪問方式這個問題上,存在兩種截然不同的觀點。其中一派認為,在該變數定義所在的類中,你可以自由訪問它 另一派認為,即使在這個類中你也應該只使用訪問函式間接訪問。兩派之...