Summary:你有一些子類,其中相應的某些函數以相同順序執行相似的操做,但各個操做的細節上有所不一樣。將這些操做分別放進獨立函數中,並保持它們都有相同的簽名,因而原函數也就變得相同了。而後將原函數上移至超類。函數
動機:工具
繼承是避免重複行爲的一個強大工具。不管什麼時候,只要你看見兩個子類中有相似的函數,就能夠把它們提高到超類。可是若是這些函數並不徹底相同該怎麼辦?咱們仍有必要儘可能避免重複,但又必須保持這些函數之間的實質差別。測試
常見的一種狀況是:兩個函數以相同順序執行大體相近的操做,可是各操做不徹底相同。這種狀況下咱們能夠將執行操做的序列移至超類,並藉助多態保證各種操做仍得以保持差別性。這樣的函數被稱爲(Template Method)模板函數 spa
作法: 繼承
1.在各個子類中分解目標函數,使分解後的各個函數要不徹底相同,要不徹底不一樣編譯
2.運用Pull Up Method將各子類內徹底相同的函數上移至超類。模板
3.對於那些(剩餘的、存在於各子類內的)徹底不一樣的函數,實施Rename Method,使全部這些函數的簽名徹底相同。im
à這將使得原函數變爲徹底相同,由於它們都執行一樣一組函數調用;但各子類會以不一樣方式響應這些調用img
4.修改上述全部簽名後,編譯並測試。di
5.運用Pull Up Method將全部原函數逐一上移至超類。在超類中將那些表明各類不一樣操做的函數定義爲抽象函數。
6.編譯,測試
7.移除其餘子類中的原函數,每刪除一個,編譯並測試