/************************************************************************************************** |
§案例場景:
1、交易訂單有諸多分類,且每種類都有各自的附加業務規則與邏輯:
所以在保存訂單時,我們往往會附加不同業務處理,以填充業務訂單實體。
eg: 計算積分規則、業務類型、額外擴展信息處理
另外,在根據不同業務類型,獲取訂單擴展信息時,也需要額外附加職責。
2、參數校驗
參數校驗通常體現在提供服務的接口上,不同的接口、不同的業務類型會存在不同的參數、業務校驗規則,抑或是橫向、縱向擴展,這裏是一個變化點。
§分析設計:
以上兩類問題通常有個基本點,就是他們的事務處理大部分邏輯會有共性的表現,而後則是不同行爲的修飾與擴展。
§設計實現:
1、 設計類圖
2、 代碼實現
訂單修飾:
DepositOrderInfo orderInfo = new DepositOrderInfo();
//訂單主體
IOrders orders = new MainOrder();
//修飾
orders = new ShopOrderDecorator(orders);
//根據業務類型取得不同修飾對象
InterfaceFactory factory = new InterfaceFactory();
factory.PayChannel = payInfo.PayChannel;
orders = factory.OrderDecoratorInstance(orders);
//修飾
orders = new MerchantOrderDecorator(orders);
orders.FillOrderInfo(orderInfo, payInfo);
參數解析修飾:
IParameters parameters = new ParameterService();
//單層修飾
parameters = new ShopParameter(parameters);
ShopParameterInfo payInfo = parameters.AnalyzeParameter<ShopParameterInfo>(requestInfo);
//......
//校驗參數
int returnCode = parameters.ValidateParameter(payInfo);
if (returnCode != Consts.Success)
{
return GetResponse(returnCode);
}
3、主要示例代碼
http://download.csdn.net/download/webwalker/7470273