美文网首页
命令模式

命令模式

作者: 那年23 | 来源:发表于2018-12-27 13:08 被阅读5次

概念

  说到命令模式,我就想到了公司让开发产品的时候,这里就靠这个举个例子。先来段具体的定义:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。

角色

抽象命令:定义操作。
具体的命令:完成操作。
调用者:添加命令和执行。
执行者:提供具体命令执行操作(做事的)。

上代码

  先解释下大概模拟的流程,产品经理向外界提供公司能进行的哪些开发,然后客户选择后,产品经理调用这些命令,让开发来开发产品。这里就将执行者与调用者分开了,避免各位开发大牛直接和客户接触。

首先是执行者:各位开发大牛
/**
 * 开发人员,这里模拟的是具体的执行者
 *
 */
public class Coders {
    
    public void doApp(){
        System.out.println("开发app");
    }
    
    public void doWeb(){
        System.out.println("开发后台");
    }
    
    public void fixComputer(){
        System.out.println("修电脑");
    }
}
然后是抽象的命令接口与具体的命令
public interface Demand {
    void execute();
}
/**
 * app 开发功能。
 * 像外包公司要向客户展示的,我们能做什么一样。
 *这里模拟的是具体的命令。
 */
public class AppDemand implements Demand {

    private Coders coders;

    public AppDemand(Coders coders) {
        this.coders = coders;
    }

    @Override
    public void execute() {
        coders.doApp();
    }

}
public class WebDemand implements Demand {
    
    private Coders coders;

    public WebDemand(Coders coders) {
        this.coders = coders;
    }

    @Override
    public void execute() {
        coders.doWeb();
    }
}
接下来就是产品经理了,这里模拟的是调用者

  顺带说一嘴,这里本该添加删除操作的。

/**
 * 产品经理。这里模拟的是调用者
 *
 */
public class ProductorManager {
    
    private List<Demand> demands = new ArrayList<>();
    
    public void addDemands(Demand demand){
        demands.add(demand);
    }
    
    public void doProduce(){
        for(Demand demand:demands){
            demand.execute();
        }
        demands.clear();
    }
}
客户端测试类
public class Client {
    public static void main(String[] args) {
        //开公司前的准备  向外界提供哪些  命令
        Coders coders = new Coders();
        ProductorManager pm = new ProductorManager();
        AppDemand app = new AppDemand(coders);
        WebDemand web = new WebDemand(coders);
        
        //具体的命令执行
        pm.addDemands(app);
        pm.addDemands(web);
        pm.doProduce();
        
    }
}
结果
The End

优点:实现了命令与执行者的分离,降低了耦合度;可以提供撤销操作。
缺点:可能会导致具体的命令类过多。

需要使用的时候,如果满足优点中的某一条即可。

相关文章

  • 12.vim的使用技巧

    命令模式 、命令行模式、编辑模式: INSERT 首次进入文件: 命令模式输入: 表示 命令行模式出现...

  • 五、Linux vim编辑器

    vim编辑器三种模式:命令模式、编辑模式、末行模式 1.命令模式: vim进入文件后就是命令模式 1.1 命令模式...

  • 终端操作文件

    VIM 模式切换从命令模式->编辑模式:i,a,o,I,A,O从编辑模式->命令模式:ESC从命令模式->末行模式...

  • vim 操作 && Mac 配置本地Apache

    一、vim 的基本命令操作 vim 的模式: 编辑模式 ,命令模式 编辑模式: 命令模式:可以通过命令 最重要的命...

  • Vim高效编辑器

    Vim程序员高效编辑器 命令模式,输入模式,底线命令模式 默认进入vim就是命令模式,输入i变为输入模式 命令模式...

  • Command模式

    命令模式(Command) 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Tran...

  • 设计模式详解——命令模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之命令模式。 一、命令模式的概念 命令模式...

  • Vi编辑器

    命令模式 文本输入模式 末行模式。 插入模式 移动光标: 删除命令: 撤销命令: 重复命令 文本行移动: 复制粘贴...

  • JavaScript设计模式七(命令模式)

    JavaScript设计模式七(命令模式) 定义: 命令模式是最简单和优雅的模式之一,命令模式中的命令指的是一个执...

  • Cisco 路由器配置命令大全(二)

    (1)模式转换命令 用户模式----特权模式,使用命令"enable"特权模式----全局配置模式,使用命令"co...

网友评论

      本文标题:命令模式

      本文链接:https://www.haomeiwen.com/subject/aksrlqtx.html