标签:
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。
/** * @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(); }
/** * @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("插入订单日志表"); } }
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.测试
public class M { public static void main(String[] args) { Component orderOperation = new OrderOperationPlus(); orderOperation.paySuccess(); } }
装饰模式,在原有的逻辑基础上,动态的新增逻辑
记得之前,公司里做支付,支付成功了要做两件事
1.更改订单表的订单状态
2.插入订单的log
但是,之后政府出台了新政策-支付宝支付订单要去海关备案。又要添加新的逻辑又不能改变之前的代码,这里,装饰模式很自然的使用起来了
标签:
原文地址:http://blog.csdn.net/zy_281870667/article/details/52191871