设计模式(二十二)----命令模式

目录

1.Command模式

1.1 作用

1.2 示例程序

1.2.1 示例程序类图

1.2.2 Command接口

1.2.3 MacroCommand类

1.2.4 DrawCommand类

1.2.5 Drawable接口

1.2.6 DrawCanvas类

1.2.7 Main类

1.2.8 示例程序时序图

1.3 Command模式中的角色

1.4 其他特点


1.Command模式

1.1 作用

   一个类在进行工作时会调用自己或是其他类的方法,虽然调用结果会反映在对象的状态中,但并不会留下工作的历史记录。Command模式就是用类来表示命令的实例,把命令当成“物”来使用,要想管理工作的历史记录,只需管理这些实例的集合即可,而且还可以随时再次执行过去的命令,或是将多个过去的命令整合为一个新命令并执行。

1.2 示例程序

1.2.1 示例程序类图

1.2.2 Command接口

//表示命令的接口
public interface Command {
    public abstract void execute();//执行命令
}

1.2.3 MacroCommand类

//具体的命令类
public class MacroCommand implements Command{
    private Stack<Command> commands = new Stack<>();//存储历史命令,用栈来体现命令的顺序,栈顶是最近的命令

    @Override
    public void execute() {
        Iterator it = commands.iterator();//把历史命令都执行一遍
        while (it.hasNext()) {
            ((Command)it.next()).execute();
        }
    }

    public void add(Command cmd) {
        if (cmd != this) {//防止不小心把当前命令加进去,造成死循环
            commands.push(cmd);
        }
    }

    public void undo() {//撤销一个命令
        if (!commands.empty()) {
            commands.pop();
        }
    }

    public void clear() {//清除全部命令
        commands.clear();
    }
}

1.2.4 DrawCommand类

//画一个点的命令类
public class DrawCommand implements Command{
    private Drawable drawable;//绘制对
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值