思維導圖
介紹
專業術語
accessor:訪問者,存儲器——在本文翻譯爲“函數”
dumb:啞
domain class:用以處理業務邏輯
presentation class:用以處理”數據表現形式“
business logic:業務邏輯
unidirectional:單向的
bidirectional:雙向的
collection:羣集
Self Encapsulate Field
動機:
“間接訪問變量”:支持更靈活的數據獲取方式,如lazy Initialization(意思是隻有用到值時,纔對它進行初始化。)
“直接訪問變量”:代碼比較容易閱讀,不需要停下來說:“啊,這只是個取值函數”。
選擇:1、代碼規範,按照團隊中大多數人的做法去做。
2、個人比較喜歡“直接訪問變量”,直到這種方式帶來麻煩爲止。
martin(作者)的例子:你想獲取superclass中的field,卻又想在subclass中將該field改爲計算後的值,這就最該使用Self Encapsulate Field。
我自己的例子:我一般會把field設置成private,如果外部變量,需要用到此field的時候,我就會用Self Encapsulate Field。或者field的值有變化的時候,用Self Encapsulate Field。
Replace Data Value with Object
開發初期,我們也許會使用基本數據類型表示簡單的行爲。例如:你可能會用一個字符串表示電話號碼,但是隨後可能會出現電話號碼的“格式化“,”驗證“,”抽取區號“之類的特殊行爲。——這時候我們就需要一個新類。
Replace Array with Object
動機:
數組常用於一組相似對象。如果數組中的元素不同,很難明白數組中的第一個元素是人名這樣的約定。對象就不同了,可以通過值域名稱和函數名稱傳達這樣的信息。——這樣無須死記,無須註釋。
Encapsulate Field
動機: