首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计模式实战-命令模式

定义与类型

适用场景

优点

缺点

相关模式

备忘录模式 经常结合使用

coding

典型应用是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://kuaibao.qq.com/s/20200114A0SYOQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券