[size=medium]意圖
定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。template method使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
場景模版方法是非常容易理解的設計模式,一來是因為它沒有過多結構上的交錯,二來是因為這種**復用技術對於掌握oo知識的人來說非常容易可以想到,很可能你已經在很多地方運用了模版方法。在運用一些設計模式的時候常常也會一起運用模版方法,甚至有的設計模式本身就帶有模版方法的思想。
今天,我們給出這樣乙個實際的例子。做過銀行支付、支付寶支付的人都知道,乙個支付的過程是基於兩個介面的。提交介面和閘道器返回介面,雖然各大閘道器的支付介面格式不同,比如有的閘道器對於支付金額的引數是money,有的閘道器又是amount,但是從支付的提交過程來說,我們一般都會經歷以下步驟:
l 獲取訂單資訊,驗證訂單的合法性
l 生成用於提交到各大閘道器的表單
l 記錄日誌
l 把表單提交到相應的閘道器
對於各個閘道器,生成的提交表單以及記錄日誌的方式是不一樣的,但是整個支付流程以及流程中的獲取訂單資訊、提交表單的過程是一樣的。由此引入模版方法模式來復用不變的部分,把可變的部分留給子類去實現。
code:
using system;
using system.collections.generic;
using system.text;
namespace templatemethodexample
}class order
class submitform
abstract class paygateway
submitform sf = generateorderform(order);
if (sf == null)
writelog(sf);}}
class ipsgateway : paygateway
protected override submitform generateorderform(order order)
}}[/size]
Enterprise Library設計模式
在軟體架構和開發中,模式是發生在給定的環境的確定問題的描述,和基於主導力 guiding forces 集合,提出乙個解決方案。解決方案通常是乙個簡單的機制,因為它是二個或我個類 物件 服務 程序 執行緒 元件或節點的組合,這些在一起工作以解決底層架構或開發挑戰。模式是對於開發和架構而言是非常有用的...
Guarded Suspension設計模式
guarded suspension 設計模式可以保證,當執行緒在訪問某個物件時,發現條件不滿足,就掛起等待條件滿足時再次訪問 public class guardedsuspensionqueue catch interruptedexception e 插入元素並且喚醒take執行緒 queue...
設計模式 Abstract Factory模式
還是乙個創造型模式,可以簡單的認為,創造型模式就是對使用者使用new的乙個封裝,封裝作為物件導向乙個重要的特性,它絕對不是一對大括號那麼簡單,他重要的是封裝變化點.如果沒有變化,那就別封裝吧,直接讓使用者new吧,這樣效率是最高的,但因為會有變化,所以才會有物件導向和設計模式.抽象工廠是應對這樣的一...