在軟體構建過程中,對某一項任務,它常常有穩定的整體操作結構,但是各個子步驟有很多改變需求,或者由於固有原因(如框架和應用之間的關係)而無法和任務的整體結構同時實現。如何在確定乙個穩定操作的前提下,來靈活應對各個子步驟的變化,或者晚期實現需求。
我們先看乙個例子:
//類庫開放人員
public
class
library
public
void
step3()
public
void
step5()
}
//應用開發人員
public
class
public
boolean
step2()
public
void
step4()
public
static
void
main(string args)
library.step5();
}}
某個功能需要使用5個方法,類庫開發人員只能實現其中三個,另外的需要應用開放人員去開發,再進行組合。可能你也會這麼做吧,但是這麼做其實並不是乙個完美的解決方案。因為main方法的整個流程是固定的,只是其中的幾個步驟的實現是可變的。
我們對library類進行改良:
//類庫開放人員
public
abstract
class
library
private
void
step3()
private
void
step5()
protected
abstract
boolean
step2();
protected
abstract
void
step4();
public
void
run()
step5();
}}
//應用開發人員
public
library
public
void
step4()
public
static
void
main(string args)
}
應用開放人員不需要再關心方法的呼叫流程,只需要實現定製的方法即可,將早繫結變為晚繫結,從而實現**的重用,降低開放人員的開放難度。簡單好用
設計模式之模板方法設計模式
父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...
模板設計模式 PHP設計模式之模板方法模式
模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...
設計模式之模板方法模式
定義 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟 型別 行為類模式 事實上,模板方法是程式設計中乙個經常用到的模式。比如,給定乙個整數陣列,把陣列中的數由大到小順序,然後把排序之後的結果列印出來。這個需求大體可以分為兩部分,...