設計模式之模板方法模式

2021-08-02 20:52:14 字數 1222 閱讀 2769

模板方法模式(template method pattern),二十三中設計模式之一,也是一種比較常用的設計模式。模板方法模式,顧名思義,主要就是提供乙個模板的,無論是在現實生活中還是在開發過程中,總會遇到這樣的情況,完成某一項工作的時候,其大體的步驟是固定不變的,但是其中具體各個步驟的操作是根據實際情況來確定,這個時候,為了防止步驟出現錯誤,就可以使用模板方法模式,將整體的流程確定下來,然後將具體需要完成的內容留空,根據具體的情況再進行完成,比如說,我們去醫院看病,需要的大概流程如下:

1. **

2. 向醫生反饋具體的病情

3. 醫生根據具體情況開藥

4. 交醫藥費

5. 取藥

這其中的流程是固定的,但是第2點,第3點是要根據具體情況來確定的。在軟體開發過程中,有一些過程也是如此的,使用者可以根據實際情況進行相應的實現,但是,我們不希望這個過程被亂,這時候,模板方法就起到很好的作用了。

接下來我們採用上面到醫院看病的例子來具體看下模板方法的實現。

//這裡需要使用抽象類而不是介面,有部分方法是需要實現的

public

abstract

class

seeadoctor

// 這裡最好是將抽象方法宣告為protected,僅供子類使用

// 當然,這裡可以根據情況有多個抽象的方法

protected

abstract

void talkwithdoctor();

private

void checkout()

private

void takemedicine()

// 處理流程,將其宣告為final,避免流程被修改

public

final

void proceed()

}class

seeskindoctor

extends

seeadoctor

}class

seementaldoctor

extends

seeadoctor

}// 對應的測試類

class

client

}

模板方法模式主要是用於希望使用者按照一定的流程、過程來完成某個事情,同時使用者可以根據需要進行部分或者全部但不包括流程的定製此類情況,既能夠保證按照一定的流程來完成某個事情,又能夠讓使用者根據需要進行定製。

模板設計模式 PHP設計模式之模板方法模式

模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...

設計模式之模板方法設計模式

父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...

設計模式之模板方法模式

定義 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟 型別 行為類模式 事實上,模板方法是程式設計中乙個經常用到的模式。比如,給定乙個整數陣列,把陣列中的數由大到小順序,然後把排序之後的結果列印出來。這個需求大體可以分為兩部分,...