對函數的重構方法程序員
在面向對象的設計中,決定把責任放在哪裏。算法
先使用移動字段,在移動方法數據庫
Hide Delegate編程
侷限性是每當客戶要使用受託類的新特性時,就必須在服務段添加一個簡單委託函數,受託類的特性愈來愈多,這一過程會愈來愈痛苦。設計模式
簡單委託關係數組
動機session
何時隱藏多線程
怎麼隱藏架構
對於這個類的任何修改都應該經過該類的方法。類擁有一些數據卻無所覺,擁有一些依賴無所覺是很是危險的。因此纔要封裝字段,封裝集合,監視數據,用對象替代數組,用對象替代集合,關聯改動。app
Change Unidirectional Association to Bidirectional
動機
何時改動
怎麼實現
添加一個反向指針,並使修改函數可以同時更新兩條鏈接。
在被引用的類中增長一個字段,保存反向指針。
控制端和被控制端
在被控端創建一個輔助函數,負責修改反向指針
若是既有的修改函數在控制端,讓它負責控制修改反向指針
若是既有的修改函數在被控端,就在控制端創建一個控制函數,並讓既有的修改函數調用這個新建的控制函數,來控制修改反向指針。
全部的數據都應該隱藏起來。
Extract Superclass
動機
何時作
怎麼作
新建一個空白抽象類
Separate Domain from Presentation
動機
何時作
怎麼作
將領域邏輯分離出來,爲它們創建獨立的鄰域類。
爲每一個窗口創建一個領域類,
若是窗口內含有一張表格,新建一個類來表示其中的行,再以窗口所對應之領域類中的一個集合來容納全部行領域對象
檢查窗口中的數據,若是數據只被用於UI,就把它留着,若是數據被領域邏輯使用,並且不顯示與窗口上,咱們就可使用移動方法將它搬移到領域類中,若是數據同時被UI和領域邏輯使用,就對它實施複製被監視數據,使它同時存在於兩處,並保持兩處之間的同步。
展示類中的邏輯,實施提煉方法將展示邏輯從鄰域邏輯中分開,一旦隔離了鄰域邏輯,在運用搬移方法將它移到鄰域類。