模板方法模式介紹
在面向?qū)ο箝_發(fā)過程中丙笋,通常會遇到這樣的一個問題,我們知道一個算法所需的關(guān)鍵步驟洒嗤,并確定了這些步驟的執(zhí)行順序,但是魁亦,某些步驟的具體實現(xiàn)還是未知的渔隶,或者說某些步驟的實現(xiàn)是會隨著環(huán)境的變化而改變的。這個時候就需要用到模板方法模式洁奈。
模板方法實際上是封裝了一個固定的流程间唉,就像是一套執(zhí)行模板一樣,第一步該做什么利术,第二步該做什么都已經(jīng)在抽象類中定義好呈野。而子類可以有不同的算法實現(xiàn),在框架不被修改的情況下實現(xiàn)某些步驟的替換氯哮。
模板方法的定義
定義一個操作中算法的框架际跪,而將一些步驟放到子類中實現(xiàn),使子類可以不改變一個算法的結(jié)構(gòu)即可重新定義該算法的特定步驟喉钢。
模板方法的使用場景
- 多個子類有公有的方法姆打,并且邏輯基本相同時。
- 重要肠虽、復(fù)雜的算法幔戏,可以把核心算法設(shè)計為模板方法,周邊的相關(guān)細節(jié)功能則由各個子類來實現(xiàn)税课。
- 重構(gòu)時闲延,模板方法是一個經(jīng)常使用的模式,把相同的代碼抽取到父類中韩玩。
應(yīng)用實例
Android中的AsyncTask和Activity生命周期就是模板方法模式垒玲。
模板方法模式類圖.jpg