C 設計模式之Template Method

2021-06-15 22:11:47 字數 959 閱讀 9788

名稱:template method

結構:

意圖:

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。template method 使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

適用性:

一次性實現乙個演算法的不變的部分,並將可變的行為留給子類來實現。

各子類中公共的行為應被提取出來並集中到乙個公共父類中以避免**重複。這是o p d y k e 和j o h n s o n 所描述過的「重分解以一般化」的乙個很好的例子[ o j 9 3 ]。首先識別現有**中的不同之處,並且將不同之處分離為新的操作。最後,用乙個呼叫這些新的操作的模板方法來替換這些不同的**。 

控制子類擴充套件。模板方法只在特定點呼叫「hook 」操作,這樣就只允許在這些點進行擴充套件。 

示例**

// template method

namespace templatemethod_designpattern

virtual

public

void doalgostep3()

virtual

public

void doalgostep5()

}class customalgorithm : algorithm

public

override

void doalgostep5()

}///

/// summary description for client.

///

public

class client}}

C 設計模式 之 設計模式概述

一,為什麼學習設計模式?二,什麼是設計模式?三,怎麼描述設計模式?四,設計模式有哪幾類?五,設計模式之間的關係?六,學習設計模式的四種狀態 作為攻城獅 設計模式 這個詞應該都不陌生,那麼,你有靜下心來系統的學習它一下嗎?本系列博文描述了物件導向設計模式的實現。之所以取名為 c 設計模式,是因為我在文...

C 之設計模式

單例的一種實現方式 1.建構函式私有化 2.宣告乙個靜態字段,作為全域性唯一的單例物件 3.宣告乙個靜態函式,返回全域性唯一的物件 using system using system.collections.generic using system.linq using system.text us...

c 設計模式之 工廠模式

使用工廠的客戶根本不知道具體的類.工廠的使用者建立乙個基類的物件.但由子類決定例項化哪個.這就允許我們服從子類的例項化,但是呼叫都不知道哪個物件被建立.來自源 wiki include class button class osxbutton public button class windowsb...