您申请加入课程:软件构造

软件构造

华南师范大学软件工程专业

https://www.scholat.com/course/rjgz
  • 创建者

    Creator

    潘家辉
  • 活跃度

    Activeness

  • 访问量

    Visits

    79848

教学公告

18软工第11周安排
[作者: 陈恒法  发布时间:2021-05-13 11:20:19  浏览次数:577次]



一、教学安排

讲授第18章 命令模式(277-292页)


实验:命令模式


二、重点难点


1、理解命令模式的动机和结构

2、理解命令模式的实现原理
3、学会应用命令模式解决问题。


大家可以根据自己的情况进行相应的预习


三、课前思考

某公司需要开发了一款游戏,为了满足不同客户的操作习惯,允许玩家通过配置文件自定义按键控制角色运动方向和动作。 现请你协作设计实现该功能。要求:将来角色需要拓展新的动作时不需要修改已有的代码。


四、师说

命令模式的关键之处就是把请求封装成为对象,也就是命令对象,并定义了统一的执行操作的接口,这个命令对象可以被存储、转发、记录、处理、撤销等,整个命令模式都是围绕这个对象在进行。

(2)命令模式的组装和调用
在实际开发过程中,Client和Invoker可以融合在一起,由客户在使用命令模式的时候,先进行命令对象和接收者的组装,组装完成后,就可以调用命令执行请求。
(3)命令模式的接收者
接收者可以是任意的类,对它没有什么特殊要求,这个对象知道如何真正执行命令的操作,执行时是从command的实现类里面转调过来。
一个接收者对象可以处理多个命令,接收者和命令之间没有约定的对应关系。接收者提供的方法个数、名称、功能和命令中的可以不一样,只要能够通过调用接收者的方法来实现命令对应的功能就可以了。
(4)智能命令
在标准的命令模式里面,命令的实现类是没有真正实现命令要求的功能的,真正执行命令的功能的是接收者。
如果命令的实现对象比较智能,它自己就能真实地实现命令要求的功能,而不再需要调用接收者,那么这种情况就称为智能命令。
也可以有半智能的命令,命令对象知道部分实现,其它的还是需要调用接收者来完成,也就是说命令的功 能由命令对象和接收者共同来完成。
(5)发起请求的对象和真正实现的对象是解耦的
请求究竟由谁处理,如何处理,发起请求的对象是不知道的,也就是发起请求的对象和真正实现的对象是解耦的。发起请求的对象只管发出命令,其它的就不管了



作者:tomas家的小拨浪鼓
链接:https://www.jianshu.com/p/1bf9c2c907e8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


五、拓展阅读材料

https://baike.baidu.com/item/%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F/7277118?fr=aladdin



相关课程

扫一扫二维码,快速加入本课程!

放大二维码 查看使用方法
关闭