對象和數(shù)據(jù)結(jié)構(gòu)
6.1 數(shù)據(jù)抽象
更愿意用抽象狀態(tài)表述數(shù)據(jù)宽涌,這并不只是用接口和賦值器稍坯,取值器就萬事大吉,要以更好的方式呈現(xiàn)某個(gè)對象包含的數(shù)據(jù)刻像,需要作出嚴(yán)肅的思考。傻樂著亂加取值器和賦值器并闲,是最壞的選擇
6.2 數(shù)據(jù)细睡、對象的反對稱性
對象與數(shù)據(jù)及結(jié)構(gòu)之間的二分原理: 過程式代碼(使用數(shù)據(jù)及結(jié)構(gòu)的代碼)便于在不改動(dòng)既有數(shù)據(jù)及結(jié)構(gòu)的前提下添加新函數(shù),面對對象代碼便于在不改動(dòng)既有函數(shù)的前提下添加新類帝火。
反過來也說的通: 過程式代碼難以添加新數(shù)據(jù)結(jié)構(gòu)溜徙,因?yàn)楸仨毿薷乃泻瘮?shù)。面對對象代碼難以添加新函數(shù)犀填,因?yàn)楸仨毿薷乃蓄悺?br>
6.3得墨忒(tui)耳律
https://en.wikipedia.org/wiki/Law_of_Demeter#In_object-oriented_programming
維基百科的解釋
模塊不應(yīng)了解它所操作對象的內(nèi)部情形蠢壹。
類C的方法f只應(yīng)該調(diào)用以下對象的方法:
*C
*由f創(chuàng)建的對象;
*作為參數(shù)傳遞給f的對象宏浩;
*由C的實(shí)體變量持有的對象知残。
方法不應(yīng)調(diào)用由任何函數(shù)返回的對象的方法。換言之,只跟朋友談話求妹,不與陌生人談話乏盐。
6.3.1 火車失事
6.3.3 隱藏結(jié)構(gòu)
6.4 數(shù)據(jù)傳輸對象
最為精煉的數(shù)據(jù)結(jié)構(gòu),是一個(gè)只有公共變量制恍。沒有函數(shù)的類父能,這種函數(shù)結(jié)構(gòu)有時(shí)被稱為數(shù)據(jù)傳送對象,或DTO(Data Transfer Objects)
6.5 小結(jié)