template method模式是比較簡單的設計模式之一,但它卻是**復用的一項基本的技術.最近頻上各大論壇頭條的某高校某女生抨擊教育事件,讓很多人對我國的大中學生的教育普通存在的問題產生共鳴,這些個問題可以很好的闡釋這個模式的應用。好了,code is cheap。讓**說話。
類圖:
**如下:
code
using
system;
using
system.data;
using
system.data.sqlclient;
using
system.collections.generic;
namespace
templatepattern
is studying,especially english.
", studenttype));
}public
virtual
void
eat()
public
abstract
void
sleep();
/*模板方法 在基類裡定義,而且不能夠被派生類更改。有時候它是私有方法(private method),但實際上它經常被宣告為protected。
* 它通過呼叫其它的基類方法(覆寫過的)來工作,但它經常是作為初始化過程的一部分被呼叫的,這樣就沒必要讓客戶端程式員能夠直接呼叫它了。
*////
///模板方法,學生學習,吃飯,休息 (template method模式的乙個特徵就是剝離共同點)
///public
void
beginstudentlife()
}public
class
highschoolstudent : student
public
override
void
study()
public
override
void
sleep()
}public
class
universitystudent : student
public
override
void
study()
public
override
void
sleep()
}public
class
program}}
總結:1.模板方法用最簡潔的機制(虛函式的多型性)為很多應用程式框架提供了靈活的擴充套件點,是**復用方面的基本實現結構。
2.除了可以靈活應對子步驟的變化外,「不用呼叫我,讓我來呼叫你」的反向控制結構是模板方法的典型應用。
設計模式學習 模板方法模式
型別 行為模式 模板方法模式定義乙個操作中演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些 特定步驟。uml圖 新建賽車的父類 package car package public class car parent public void setsp...
設計模式學習 模板方法模式
1.雜言 設計模式,現在覺得每種模式像工業行業的一些典型零件。這些零件也可以變種出很多類似零件。吧這些零件組合起來,就成了一台機器。好吧,我現在是這麼理解的。一般 結構都是,一層呼叫一層,就是一般都是頂層的呼叫底層的。但模板方法確實反過來的,有父類呼叫子類的方法。這個聽說又牽扯到啥好萊塢原則。對於這...
設計模式學習 模板方法模式
模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟.父類就應該要成為子類的模板,所有重複的 都應該要上公升到父類中,而不是讓每個子類都取重複,重要,複雜的演算法,可以把核心演算法設計為模板方法,周邊的相關細...