《架构模式应用●设计模式》之构造者

/**************************************************************************************************
** 设计思想需要归纳与提炼,无论简单抑或复杂。当然方案未必是唯一的最佳路径,在总结
** 的过程中发现问题、改善问题;只有跳出业务,将复杂问题简单化,才能提纲挈领,寻找
** 共性与变化的制高点!
************************************************************************************************/

§案例场景:

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、主要示例代码

http://download.csdn.net/download/webwalker/7470259

§总结:

       当然,还可有通过XML+XSLT的方式来实现,更为简单一些(不同业务实体构造相同或不同XML,配合定义的XSLT显示不同结果页面)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值