設計模式之模板方法模式(C )

2021-08-29 22:58:33 字數 1294 閱讀 9420

模板方法模式,定義乙個操作中的演算法的股價,而將一些步驟延遲到了子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。說白了就是有乙個演算法有很多部分,這個演算法在基類中已經定義好了。而演算法中的各個部分都寫成各個成員函式了。然後在子類中可以覆蓋這些成員函式,從而實現不同的演算法。

其uml圖如下:

在abstractclass中有個templatemethod()方法,該方法定義了乙個演算法,在該演算法中呼叫了其他的成員方法,這些成員方法組成了整個演算法的各個部分。而這這些成員方法則可以根據子類的不同實現而可以改變。

示例**如下:

// templatemodel.h檔案

#pragma once

#include

class

abstractclass

protected

:virtual

void

primitiveoperation_0()

=0;virtual

void

primitiveoperation_1()

=0;}

;class

concreteclass_0

:public abstractclass

virtual

void

primitiveoperation_1()

};class

concreteclass_1

:public abstractclass

virtual

void

primitiveoperation_1()

};

測試**如下:

#include

#include

"templatemodel.h"

intmain()

測試結果如下圖:

模板方法模式就是提供了乙個很好的**復用平台。因為有時候,我們會遇到由一系列步驟構成的過程需要執行。這個過程從高層次上看是相同的,但是有些步驟實現可能不同。這時候,我們通常就應該要考慮用模板方法類了。也就是說,當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複出現。我們通過模板方法模式把這些行為搬移到單一的地方,這樣幫助子類擺脫重複的不變行為的糾纏。

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

模板方法模式是指在乙個方法中定義乙個演算法的骨架,將一些步驟延遲到子類中 模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟 抽象方法由子類實現 這樣可以確保演算法的結構不變,由子類提供部分實現 策略模式和模板方法模式都封裝演算法,乙個用組合,乙個用繼承 測試 include...

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

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

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

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