/************************************************************************************************** |
§案例場景:
1、接收參數處理交易、充值明細,訂單號在不同的業務流程中存在性不確定。
2、訂單明細頁面,顯示不同類型訂單處理結果
銀行卡、一點充、銀聯快捷支付、**卡支付、**卡充值、購買卡密、錢包餘額、轉賬劃賬等等,每類業務結果可能顯示的UI。
3、頁面結構
大致分爲:充值提示、積分提示與嵌入頁面、特定遊戲充值提示、返回按鈕(繼續購買、充值、首頁……),另外還有一個充值、支付不確定性提示。
當然,每一部分都有可能“變種”,暫且看成是一類問題。
§分析設計:
1、參數爲動態變化,且部分參數考慮安全需要加解密
增加參數解析器,
2、需要根據參數確定不同業務類,且需將部分參數帶入業務類
增加業務適配器
3、不同的業務類,可通過不同的建造對象,構造完成後呈現到頁面端
建造者模式
§設計實現:
1、設計類圖
2、代碼實現
//設定Adapter
ResultAdapter adapter = new ResultAdapter();
adapter.ResultType = RequestType;
adapter.OrderID = OrderID;
adapter.PaymentID = PaymentID;
adapter.ErrorCode = ErrorCode;
//指揮構造
DirectorResult director = new DirectorResult();
//設定生成器
BuilderResult builder = director.Create(adapter);
//構造產品
director.Construct(builder);
//返回結果
ProductResult product = builder.GetResult();
if (product == null
|| product.ReturnCode != Consts.Success)
{
Product = product == null ? new ProductResult() : product;
ShowUI(Pay_Alter_PH);
return;
}
ShowUI(Pay_Success_PH);
3、主要示例代碼
§總結:
當然,還可有通過XML+XSLT的方式來實現,更爲簡單一些(不同業務實體構造相同或不同XML,配合定義的XSLT顯示不同結果頁面)