zoukankan      html  css  js  c++  java
  • 设计模式

    命令模式:将命令的请求和执行解耦,使面向客户端的命令参数化
    核心:(组合)控制器(Controller) + 命令接口(IAction),实现命令参数化
    角色:

    • 客户端:只需将命令参数发送给控制器即可
    • 控制器Controller:接受命令参数后,①完成命令参数到命令对象的解析,②调用对应命令对象的执行方法
    • 命令处理器ICommandAction/ConcreteCommandAction:命令的执行逻辑实现

    general

    public class Test {
        public static void main(String[] args) {
            // 客户端向invoker发送命令参数即可,具体的命令只需由invoker去调用实现。(解耦)
            Invoker controller = new Invoker();
            controller.actions(Invoker.Commands.PLAY);
            controller.actions(Invoker.Commands.TURN_UP);
            controller.actions(Invoker.Commands.TURN_DOWN);
            controller.actions(Invoker.Commands.STOP);
        }
    }
    
    // 负责命令的执行,其中可以增加一些控制逻辑(如:取消,暂停等)
    public class Invoker {
        public void actions(ICommandAction command){
            command.execute();
        }
    
        // 命令列表,作为用户请求命令的入口
        public static class Commands{
            public final static ICommandAction PLAY = new PlayAction();
            public final static ICommandAction STOP = new StopAction();
            public final static ICommandAction TURN_DOWN = new TurnDownVoicesAction();
            public final static ICommandAction TURN_UP = new TurnUpVoicesAction();
        }
    }
    
    // 命令抽象,存放命令的具体实现逻辑
    public interface ICommandAction {
        void execute();
    }
    
    public class PlayAction implements ICommandAction {
        @Override
        public void execute() {
            System.out.println("Start play!");
        }
    }
    
    public class StopAction implements ICommandAction {
        @Override
        public void execute() {
            System.out.println("Stop play!");
        }
    }
    

    欢迎疑问、期待评论、感谢指点 -- kiqi,愿同您为友

    -- 星河有灿灿,愿与之辉

  • 相关阅读:
    hdu 2063 二分图—最大匹配
    sql 中文转拼音首字母
    PhpStorm中如何使用Xdebug工具,入门级操作方法
    Linux怎么查看软件安装路径 查看mysql安装在哪
    仿淘宝实现多行星级评价
    Syslog linux 日志 规格严格
    Windows 退出码 规格严格
    AIX 查看进程监听端口 规格严格
    AIX tar zxvf 规格严格
    IpV6 linux RedHat5 规格严格
  • 原文地址:https://www.cnblogs.com/kiqi/p/14058661.html
Copyright © 2011-2022 走看看