作法(Mechanics)
- 決定如何分解class所負(fù)責(zé)任。
- 建立一個(gè)新class,用以表現(xiàn)從舊class中分離出來的責(zé)任。
- ==》如果舊class剩下的責(zé)任與舊class名稱不符,為舊class易名。
- 建立[從舊class訪問新class]的連接關(guān)系(link)。
- ==》也許你有可能需要一個(gè)雙向連接。但是在真正需要它之前,不要建立[從新class同往舊class]的連接。
- 對(duì)于你想搬移的每一個(gè)值域,運(yùn)用Move Field(146)搬移之。
- 每次搬移后,編譯、測(cè)試。
- 使用Move Method(142)將必要函數(shù)搬移到新class。先搬移較低層函數(shù)(也就是[就其他函數(shù)調(diào)用]多于[調(diào)用其他函數(shù)]者),再搬移較高層函數(shù)。
- 每次搬移之后,編譯、測(cè)試。
- 檢查,精簡(jiǎn)每個(gè)class的接口。
- ==》如果你建立起雙向連接,檢查是否可以將它改為單向連接。
- 決定是否讓新class暴光。如果你的的確需要暴光它,決定讓它成為reference object(引用型對(duì)象)或immutable value object(不可變之[實(shí)值型對(duì)象])。
|