/************************************************************************************************** |
§案例场景:
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显示不同结果页面)