设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1464|回复: 0

Matlab命令模式

[复制链接]

20

主题

176

金钱

290

积分

入门用户

发表于 2019-9-4 17:09:04 | 显示全部楼层 |阅读模式

命令模式(Command)将命令封装为对象,实现命令发送者和命令接收者的解耦。线程池、MVC框架用到了命令模式,本文根据以下类图,用matlab实现命令模式。
1.png
Invoker.m (传递命令对象Invoker:持有命令对象,要求命令对象执行请求)
  1. classdef Invoker < handle
  2.     properties
  3.         command
  4.     end
  5.     methods
  6.         function setOrder(obj,command)
  7.             obj.command = command;
  8.         end
  9.         function execute(obj)
  10.            obj.command.execute();
  11.         end
  12.     end
  13. end
复制代码

Command.m (抽象命令接口Command:定义命令的接口,声明执行的方法)
  1. classdef Command < handle
  2.     methods(Abstract)
  3.         execute(obj);
  4.     end
  5. end
复制代码

ConcreteCommand.m (具体的命令对象ConcreteCommand:持有具体的接受者对象,完成具体的具体的命令)
  1. classdef ConcreteCommand < Command
  2.     properties
  3.         receiver
  4.     end
  5.     methods
  6.         function obj = ConcreteCommand(receiver)
  7.            obj.receiver = receiver;
  8.         end      
  9.         function execute(obj)
  10.             obj.receiver.execute();
  11.         end
  12.     end
  13. end
复制代码

Receiver.m (接受者对象Receiver:接受者对象,真正执行命令的对象)
  1. classdef Receiver < handle
  2.     methods
  3.         function execute(~)
  4.            disp("Receiver execute");
  5.         end
  6.     end
  7. end
复制代码

test.m
  1. r = Receiver();
  2. c = ConcreteCommand(r);
  3. i = Invoker();
  4. i.setOrder(c);
  5. i.execute();
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表