PureMVC学习系列-从源码深度剖析PureMVC(从PureMVC中看设计模式-Command命令模式) .

       命令,出现在计算机中,是早就有的事,最典型的DOS系统就是命令模式最好的示例,大家输入一条指令给系统,系统就会完成一种操作,记得最早接触电脑时就是在初中的时候,Dos系统,没有鼠标,那个时候会电脑的人很少,完全明白电脑的老师就更是少得可怜,而且听说老师当时的工资是很多,受全校的尊敬。真是两重天啊,现在别说老师,就是真正的以电脑为生得人也难得生活了。

      第一学期学校的电脑还没买来,老师讲的时Window95,每周都是只能一头雾水都听老师讲那些总让人想睡觉的操作,不过当时我还是以顽强的毅力将笔记记了厚厚的一本,后来第二学期,学校从一个单位里买来一些二手的电脑,Windows操作系统造价太贵,所以装得都是Dos。这下真是让我恼火,不说那些辛苦的笔记,因为讲得东西和实际操作的完全不搭边,老师也无可奈何,只能一个一个的将指令,但是老师的技术是在不敢恭维。

     我当时根本不知道,什么电脑的历史,什么操作系统,说白了是完全不懂,甚至我还不知道,鼠标是什么东西。

     只知道,在键盘里输入几个字就可以打开一个漂亮的图片,然后上面掉下来各个字母,我按一个键就可以消灭一个。(其实就是个打字游戏)。所以当时的电脑课基本是和没上差不多,打字,老师也不知道什么正确的姿势,连她自己也是一指禅打字。

     这件事正好是一个命令模式的体现,一个完整的命令模式肯定具有以下角色。

  • 客户(Client)角色:发出一个具体的命令。
  • 命令执行者(Invoker)角色:负责执行客户端的指令。
  • 命令(Command)角色:一个抽象角色,主要是定义的所有命令的统一接口。
  • 具体命令(ConcreateCommand)角色:Command角色的实现类。
  • 接受者(Receiver)角色:执行Command,完成Command指示的操作。

      在上面举得例子中各个角色如下:

  •  客户角色:就是我,我可以发出一个指令给计算机,比如“DIR”指令;
  • 命令执行者:键盘,可以执行我的指令。
  • 命令角色:即键盘的按键。
  • 具体命令角色:即键盘的具体的按键,比如“D”."I","R"键
  • 接受者:即主机,主机执行将键盘的命令完成具体的操作,到最后驱动显示器显示结果

 

 

     再来一个阎宏老师《java与设计模式》的一个示例:

 

 

这是一个非常好的示例,Jolia,在操作他得音乐播放器在Command模式下的角色有如下所示:

客户端(client):女孩jolia

命令执行者:即音乐播放器的键盘:Keybord类

命令:即抽象的按键类,Command类,MecroCommand

具体命令:具体按键,PlayCommand,StopCommand,RewindCommand类

接收者:音乐播放器本身,AudioPlayer.

 

 

 

PureMVC在执行组件的命令时,也是采用的Command设计模式,因为在自定义的事件中对一个资源可能有多种操作,为了避免各个复杂操作间引起混乱,所以引入了Command模式。PureMVC中使用默认实现的SimpleCommand,同时继承了INotifier,所以此时他同时也是消息的通知者,拥有了Notifer的所有方法这可以降低Command与其他组件的关系如下所示:

 

public class SimpleCommand extends Notifier implements ICommand, INotifier

 

PureMVC中的命令有个MecroCommand类,此类是Command模式与合成模式的一个结合,它负责将一组命令,合成到一个命令中执行,类似于“批处理”,可以同时完成多条命令。PureMVC中Command模式的各个角色如下所示:


 

  • 客户(Client)角色:Facade组件,负责发送指令。
  • 命令执行者(Invoker)角色:Controller组件,执行Facade发送的指令。
  • 命令(Command)角色:ICommand一个抽象角色,主要是定义的所有命令的统一接口。
  • 具体命令(ConcreateCommand)角色:SimpleCommand,MecroCommand以及自定义的Command。
  • 接受者(Receiver)角色:执行Command,完成Command指示的操作,即最终的View组件

     

    命令模式可以带来很多方便通常在以下情况中使用:

    1.同一个子系统拥有多个操作,且操作时牵涉的其他类比较多,而且,每个操作做都有较大的不同。

    2.同一个资源的调用比较复杂,且操作可以抽象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程总体分为五大部分:一: MVC基本设计理念    首先讲解游戏(包含VR、AR)与软件项目为什么需要有架构与框架的理念。然后讲解游戏引擎、服务端与客户端框架的区分,且梳理分析国内目前主流的游戏客户端架构模式以及优缺点分析。以及PureMVC与StrangeIOC两种MVC开源架构的总体技术刨析。二:PureMVC开源框架插件下载与搭建基础环境。    笔者以开发一个简单的“Hello World”为例,详细讲解PureMVC基础的概念,与框架搭建过程,让学员以较快的时间,学会PureMVC框架的基础理念与应用技巧。三:PureMVC架构设计理念。    基于前面简单版本的开发过程,初步刨析PureMVC架构以“Mediator+事件通知机制”总体设计理念。讲解什么是中介者设计模式(Mediator Pattern),以及事件机制在PureMVC中的基础作用。**分析PureMVC架构基本的开发流程,以及两种不同类型的消息机制。四:开发一款游戏项目(Flappy Birds),集成PureMVC+SUIFW(此框架课程均以发布)两种框架模式,讲解在具体开发一款游戏产品时,如何分析、把握框架与游戏脚本之间的关联关系,如果发挥PureMVC彻底解耦的开发理念。五:基于前面游戏项目的开发,进一步刨析PureMVC架构的高级开发技巧:    1:PureMVC框架类与脚本之间的相互通讯机理。    2:基于PureMVC框架原理,实现游戏项目模型与脚本的彻底分离技术,真正实现美工与研发的同步开发 与无缝对接技术。    3:掌握命令层(即:控制层)中SimpleCommand 与MacroCommand 的区别与具体开发应用技巧。 一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值