码迷,mamicode.com
首页 > 其他好文 > 详细

[超次元设计模式]——命令模式

时间:2019-06-06 17:35:09      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:alt   audio   margin   else   pre   exec   and   dos   none   

1. 为什么要有命令模式

  1. 软件构建过程中。行为请求者与行为调用者可能有强耦合的情况。如下所示
    if (type == a) { do_a() }
    else if (type == b) { do_b() }
    else if (type == c) { do_c() }
    ...

    这样的代码是非常繁杂且高耦合的,所以需要一种模式优化掉它。

  2. 可能需要进行行为撤销等操作,这样编码可能会非常麻烦。

所以,命令模式,要做的就是,将行为封装成对象,以解决这个问题。

2. 命令模式的定义

命令模式:

将请求(行为)封装成对象,以便使用不同的请求、队列或者日志参数化其他对象,可支持可撤销操作。

技术图片

3. 命令模式的实现

首先,应该定义命令接口。

public interface Command {
    public void execute();
}

如果这一系列命令都需要撤销操作,可以再定义一个undo方法。

然后,子类通过实现这个接口,构成不同的命令。

public class TestCommand {
    public void execute() {
        doSomething();
    }
}

最后,调用者通过传入Command对象,实现调用。

 

[超次元设计模式]——命令模式

标签:alt   audio   margin   else   pre   exec   and   dos   none   

原文地址:https://www.cnblogs.com/tomoka/p/10985661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!