模板方法模式(template method pattern)
模版方法中的方法可以分為兩大類:模版方法(template method)和基本方法(primitive method)。
a.模版方法
乙個模版方法是定義在抽象類中的,把基本操作方法組合在一起形成乙個總算法或乙個總行為的方法。
這個模版方法一般會在抽象類中定義,並由子類不加以修改地完全繼承下來。
b.基本方法
基本方法又可以分為三種:抽象方法(abstract method)、具體方法(concrete method)和
鉤子方法(hook method)。
抽象方法:乙個抽象方法由抽象類宣告,由具體子類實現。在c#語言裡乙個抽象方法以abstract
關鍵字標示出來。
具體方法:乙個具體方法由抽象類宣告並實現,而子類並不實現或置換。在c#語言裡面,乙個具體方法
沒有abstract關鍵字。
下面講解窗體基類的模板方法實現:
抽象方法必須定義在抽象類中(abstract class),在某些場合不一定使用抽象類,比如frmbase是個具體類,因此我將模板方法改為虛擬(virtual)的。
///
///在基類定義查詢資料的模板方法,由派生窗體實現具體的查詢功能。
//////
protected
virtual
datatable
dosearch()
派生類具體實現:
//複寫
(override)
模板方法,具體實現
protected
override
datatable
dosearch()
窗體基類介面:
/// 在基類定義查詢資料的模板方法,由派生窗體實現具體的查詢功能。
///
///
protected
virtual datatable dosearch()
} 派生乙個產品定義窗體:
//複寫(override)模組方法,具體實現
protected
override datatable dosearch()
} 搜尋功能在窗體基類實現了,我們只需要定義具體的資料查詢方法。
通過重寫dosearch模組方法,從業務邏輯層返回資料。
///
///業務邏輯層
///public
class
bll_product
///
///構建測試資料表
//////
private
datatable
getdemodata()
}
WPF窗體自定義基類
最近公司開始乙個專案開發,打算使用wpf實現,由於wpf算是比較新的知識吧,公司也沒有什麼人懂,都是臨時抱佛腳的。專案中有不少窗體會共用到一些東西,比如窗體樣式風格之類的。這很自然的就想到使用繼承嘛,以往我們在winfrom下只要簡單建乙個類,讓窗體繼承自己自定義的基類即可,但,wpf窗體卻不一樣,...
模板設計模式 設計模式 模板方法模式
在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...
自然框架 頁面基類與設計模式(二) 模板模式
前篇 自然框架 頁面基類與設計模式 一 橋接模式 橋接模式的補充 下面的一段是橋接模式裡後補充的一段,橋接模式的乙個小結 什麼是交接模式?引用 大話設計模式 裡的定義 橋接模式 bridge 將抽象部分和他的實現部分分離,使他們都可以獨立的變化。p229 小菜 我覺得交接模式所說的 將抽象部分和他的...