動機(Motivation)
面向對象的首要原則之一就是封裝(encapsulation),或者稱為[數據隱藏](data hidding).
public數據被看做是一種不好的作法,因為這樣會降低程序的模塊化程度(modularity).如果數據和使用該數據的行為被集中在一起,一旦情況發生變化,代碼的修改就會比較簡單,因為需要修改的代碼都集中于同一塊地方,而不是星羅棋布地散落在整個程序中.
Encapsulate Field(206)是封裝過程的第一步.通過這項重構手法,你可以將數據隱藏起來,并提供相應的訪問函數(accessors).但它畢竟只是第一步.如果一個class除了訪問函數(accessors)外不能提供其他行為,它終究只是一個dumb class(啞類).這樣的class并不能獲得對象技術的優勢,而你知道,浪費如何一個對象都是很不好的.實施Encapsulate Field(206)之后,我會嘗試尋找那些使用[新建訪問函數]的函數,看看是否可以通過簡單的Move Method(142)輕快地將它們移到新對象去.