《架构模式应用 ● 设计模式》之装饰者
2011-08-02 17:40
330 查看
/************************************************************************************************** ** 设计思想需要归纳与提炼,无论简单抑或复杂。当然方案未必是唯一的最佳路径,在总结 ** 的过程中发现问题、改善问题;只有跳出业务,将复杂问题简单化,才能提纲挈领,寻找 ** 共性与变化的制高点! ************************************************************************************************/ |
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
§总结:
案例实现简单,没有多层修饰的行为,但是当存在多层修饰时,可以根据不同的业务类型与渠道,定义不同的修饰路径,完成多层修饰。
相关文章推荐
- 设计模式(5)------装饰者设计模式(IO流的应用)
- 设计模式-装饰者模式(Decorator)理解和在Android中的应用
- 《架构模式应用 ● 设计模式》之命令者
- 设计模式--装饰者模式(在IO体系中的应用)
- Java——设计模式——装饰者模式——在IO里的应用
- 设计模式——装饰者(Unity3D中的应用)
- 设计模式复习:常用设计模式概念及应用场景
- 【设计模式】装饰者模式
- 设计模式实战应用之一:策略模式
- 设计模式应用场景
- 设计模式(4)------装饰者设计模式
- 优秀移动应用的10种设计模式
- Java设计模式透析--装饰者模式(二)
- JDK中的设计模式应用实例
- C++技术问题总结-第14篇 常用设计模式及其应用场景
- C# 通过 Observer观察者 设计模式 来理解 抽象类 和 接口 应用在什么地方
- 小议解耦合--应用设计模式
- 设计模式 单例模式的缺陷和补救办法及应用场景2
- 设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题
- [置顶] 【设计模式】之建造者模式详解与应用(六)