装饰模式
来源:互联网 发布:android jdk linux 编辑:程序博客网 时间:2024/05/20 07:50
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。
java的IO模块,就大量的使用到了装饰模式。
1.组件接口和组件的实现
[java] view plain copy
print?
/** * @Desc:支付组件的接口 * @author zy * @date 2016年8月12日下午2:39:33 */ public interface Component { /** * @Desc:支付成功 * @author:zy * @version: 2016年8月12日 下午2:55:44 */ public void paySuccess(); /** * @Desc:修改订单状态 * @author:zy * @version: 2016年8月12日 下午2:40:42 */ public void updateOrderStatus(); /** * @Desc:插入订单的log * @author:zy * @version: 2016年8月12日 下午2:46:11 */ public void addOrderLog(); }
[java] view plain copy
print?
/** * @Desc:订单类的具体实现 * @author zy * @date 2016年8月12日下午2:46:58 */ public class OrderOperation implements Component{ @Override public void paySuccess() { updateOrderStatus(); addOrderLog(); } @Override public void updateOrderStatus() { System.out.println("修改订单状态为已支付"); } @Override public void addOrderLog() { System.out.println("插入订单日志表"); } }
2.支付组件的增强
[java] view plain copy
print?
public class OrderOperationPlus extends OrderOperation{ @Override public void paySuccess() { super.paySuccess(); pushOrder(); } /** * @Desc:推送支付的流水 * @author:zy * @version: 2016年8月12日 下午3:07:06 */ public void pushOrder(){ System.out.println("**推送支付的流水信息**"); } }
3.测试
[java] view plain copy
print?
public class M { public static void main(String[] args) { Component orderOperation = new OrderOperationPlus(); orderOperation.paySuccess(); } }
装饰模式,在原有的逻辑基础上,动态的新增逻辑
记得之前,公司里做支付,支付成功了要做两件事
1.更改订单表的订单状态
2.插入订单的log
但是,之后政府出台了新政策-支付宝支付订单要去海关备案。又要添加新的逻辑又不能改变之前的代码,这里,装饰模式很自然的使用起来了
阅读全文
0 0
- 装饰模式-撤销装饰
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- 装饰模式
- session一致性架构设计极简教程
- 架构师送书福利与季度总结
- 互联网分层架构,为啥要前后端分离?
- 2017.12.7 第一天-维修列表
- python去重,一个由dict组成的list的去重
- 装饰模式
- 分布式唯一ID极简教程
- NTFS for Mac双十二持续发力 火热进行中
- 高效sql性能优化极简教程
- MySQL 优化百分比/比例计算
- 搭建框架遇到SessionFactory is not writable or has an invalid setter method的问题
- 广东问国笔,怎样才能消除疲劳?
- android之android.intent.category.DEFAULT的用途和使用
- iptables超全详解 http://www.linuxidc.com/Linux/2016-09/134832.htm