就是定義算法骨架的方法 具體的操做:在模板中直接實現某些步驟的方法,一般這些步驟的實現算法是固定的,並且是不怎麼變化的,所以就能夠看成公共功能實如今模板裏面。 其實寫設計模式的系列筆記就是一種模板方法,每篇文章的流程(目錄)都是同樣的,我實現了每一個部分的具體細節。
模板方法比較簡單,第一次聽到這個概念的時候,發現原來本身一種用的叫作模板方法。
就是在抽象類中實現模板方法TemplateMethod,而這個方法裏面具體用到了多個具體流程如PrimitiveOperation1/PrimitiveOperation2, 子類只要繼承抽象模板而且實現具體流程,就能對外提供模板方法的能力。算法
abstract class Shoping { // 模板方法,由父類實現,能夠定義爲final public final void buyGood() { login(); order(); pay(); } abstract void login(); abstract void order(); abstract void pay(); } JingdongBuy extends Shoping { public void login() { Log.d("登陸京東帳號"); } public void order() { Log.d("生成京東訂單"); } public void pay() { Log.d("使用京東白條支付"); } } TaobaoBuy extends Shoping { public void login() { Log.d("登陸淘寶帳號"); } public void order() { Log.d("生成淘寶訂單"); } public void pay() { Log.d("使用支付寶支付"); } }
模板方法注重抽象不一樣操做之間的共同點,剖離不一樣點。
求同存異: 將共同點在抽象類中實現,不一樣的具體實現保留在各個子類。設計模式
注意: 抽象過分可能會致使後期擴展麻煩,儘可能保證模板流程之後不會再變動設計