软件构造-k8凯发旗舰
|
|
|
教学公告
20软工第10周安排
一、教学安排
讲授第18章 命令模式(277-292页)
实验:命令模式
二、重点难点
1、理解命令模式的动机和结构
2、理解命令模式的实现原理
3、学会应用命令模式解决问题。
大家可以根据自己的情况进行相应的预习
三、课前思考
某公司需要开发了一款游戏,为了满足不同客户的操作习惯,允许玩家通过配置文件自定义按键控制角色运动方向和动作。 现请你协作设计实现该功能。要求:将来角色需要拓展新的动作时不需要修改已有的代码。
四、师说
(1)命令模式的关键之处就是把请求封装成为对象,也就是命令对象,并定义了统一的执行操作的接口,这个命令对象可以被存储、转发、记录、处理、撤销等,整个命令模式都是围绕这个对象在进行。
(2)命令模式的组装和调用
在实际开发过程中,client和invoker可以融合在一起,由客户在使用命令模式的时候,先进行命令对象和接收者的组装,组装完成后,就可以调用命令执行请求。
(3)命令模式的接收者
接收者可以是任意的类,对它没有什么特殊要求,这个对象知道如何真正执行命令的操作,执行时是从command的实现类里面转调过来。
一个接收者对象可以处理多个命令,接收者和命令之间没有约定的对应关系。接收者提供的方法个数、名称、功能和命令中的可以不一样,只要能够通过调用接收者的方法来实现命令对应的功能就可以了。
(4)智能命令
在标准的命令模式里面,命令的实现类是没有真正实现命令要求的功能的,真正执行命令的功能的是接收者。
如果命令的实现对象比较智能,它自己就能真实地实现命令要求的功能,而不再需要调用接收者,那么这种情况就称为智能命令。
也可以有半智能的命令,命令对象知道部分实现,其它的还是需要调用接收者来完成,也就是说命令的功 能由命令对象和接收者共同来完成。
(5)发起请求的对象和真正实现的对象是解耦的
请求究竟由谁处理,如何处理,发起请求的对象是不知道的,也就是发起请求的对象和真正实现的对象是解耦的。发起请求的对象只管发出命令,其它的就不管了
作者:tomas家的小拨浪鼓
链接:
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
五、拓展阅读材料