命令模式的优点?_设计模式实战---命令模式

定义与类型

c4410b2bf4b2c2fbe149f3602db9dd9b.png

适用场景

d31ddef227e239968511c7a8154e6b93.png

优点

e6ada5c24875e2189e7bb49b8bea43c0.png

缺点

ef4f1ebf5af69c6a041df3698b010598.png

相关模式

备忘录模式经常结合使用

coding

26cd27f475752512325d833521857159.png
5c5f0ab500a425636fc446f937b416ed.png
0a3eff1a5c0abb6b9ac8e9f62338ee57.png
3fb0b33b83807e95fc87491560683ed0.png
39be37f0040e617106db9f46a65fae90.png
47af3cc100fb9247f9778c32303b166a.png
078315125ca7713b24cf6bfe5510b166.png

典型应用是GUI中的绘图程序, 用命令模式实现“撤销”操作.

  • 命令接收者:执行实际任务。
  • 命令者:封装所有命令者的信息。
  • 发起者:空着一个或者多个命令的顺序和执行。
  • 客户端:创建具体的命令实例
public class DrawInvoker {    //绘制列表    private List drawList = Collections.synchronizedList(new ArrayList());    //重做列表    private List redoList = Collections.synchronizedList(new ArrayList());    //添加一条命令    public void add(DrawPath command) {        redoList.clear();        drawList.add(command);    }    //撤销操作    public void undo() {        if(drawList.size() >0 ) {            DrawPath undo = drawList.get(drawList.size() - 1);            drawList.remove(drawList.size() - 1); // 把drawList中的最后一条命令删除掉.            undo.undo();            redoList.add(undo);        }    }}

“撤销”上一步操作的实现原理是, 首先记录每一条绘制命令到drawList中, “撤销”操作就是把最后一条命令从drawList中删除, 然后把canvas清空, 把drawList中的命令在清空的canvas上再绘制一遍.

本文由博客一文多发平台 https://openwrite.cn?from=article_bottom 发布!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值