第8章 重新組織資料(暫略)

2022-05-07 07:39:11 字數 1193 閱讀 7939

其實現在有了spring框架,支援外掛程式lombok,直接新增注釋@data即可完成封裝

(略...)

其實就是我們平時常用的手法,即將類中散落的資料封裝成乙個自定義型別的資料,舉個例子:

如果乙個類裡需要資料值有水果品種,單價,重量,總金額,那麼就把這四個資料封裝成乙個類就好。

1.動機:

當乙個類衍生出許多相等的實體時,你希望將它們替換成單一物件,就將這個實體物件變成乙個引用物件。

2.區分:

實體和引用,乙個類能例項出很多不同的實體物件,而引用是例項出乙個後,以後再呼叫這個類就直接等於了之前例項出的那個物件(指向了最初的例項物件)。

1.動機:

你有乙個引用物件,很小且不可變,而且不易管理,將它變成乙個值物件。

略。。1.動機:

你有乙個陣列,其中的元素各自表示不同的東西,那麼就以物件替換陣列,對於陣列中的每個元素,以乙個欄位來表示。

略。。略。。

略。。1.概念:

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

2.舉例:

static

final

double amount = 9.99;

3.造成的壞味道:

一旦這個數字修改,就要將所有地方引用到這個數字的地方修改一遍,多以換成常量很有必要。

1.概念:

你的類中存在乙個public欄位,將它宣告為private,並提供相應的訪問函式。

2.動機:

資料隱藏。

1.概念:

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

2.動機:

我們通常會在乙個類中使用集合(collection, array, list...)來儲存一組例項,這樣的類通常也會提供針對集合的取值/設定函式。但集合的處理方式和其他種類的資料略有不同,取值函式不該返回集合自身,因為這會讓使用者得以修改集合內容而集合擁有者卻一無所知,也會暴露過多物件內部資料結構的資訊,所以一是需要隱藏物件內與使用者無關的資料結構,二是應該為集合新增/移除元素的函式。

略。。1.概念:

你需要面對傳統程式設計環境中的結構記錄,為該記錄建立乙個「啞」資料物件。

略。。略。。

重新組織資料

將乙個值用於多個用途,就是催生混亂與bug的溫床 1.拆分變數 如果乙個變數有多個用途,就為每個用途宣告乙個變數。還有,如果要對引數改值,也先複製乙份,對副本改值,返回副本。2.字段改名 給字段取乙個準確的名字。好的命名及資料分布,能讓別人只看類的字段就理解這些類的行為。3.以查詢取代派生變數 盡量...

重新組織資料(一)

1,self encapsulate field 自封裝自段 現象 你直接訪問乙個字段,但與字段直接的耦合關係逐漸變得笨拙 要點 為這個字段建立取值 設定函式,並且只以這些函式來訪問字段。2,replace data value with object 以物件取代資料值 現象 你有乙個資料項,需要與...

重新組織資料(二)

6,duplicate observed data 複製 被監視資料 現象 你有一些領域資料置身於gui控制項中,而領域函式需要訪問這些資料 要點 將該資料複製到乙個領域物件中。建立乙個observer模式,用以同步領域物件和gui物件內的重複資料。7,change unidirectional a...