`
Hode
  • 浏览: 26970 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

命令模式Command

阅读更多
  • 命令模式把发出命令的责任和执行命令的责任分开,委派给不同的对象;
  • 命令模式角色:客户角色,命令角色,具体命令角色,请求者角色,接收者角色。客户创建具体命令,指派调用者(请求者)执行。请求者调用指派的命令。而命令关联具体的接收者。当请求者调用命令的时候,实际是执行命令里面的方法,而该方法是命令类通过聚合调用具体的接收者执行之。
  • 对于一个收音机系统而言,我们可以引入以下几种角色:收音机,收音机按钮,操作的人。人操作收音机,并指定按钮。当按下具体的按钮的时候,按钮关联与收音机对应的功能。收音机执行这些功能,从而完成一个操作。仔细揣摩,和上述的表述非常接近。
  • 宏命令功能:我们可以增加一个指令集,该类可以添加或者删除命令元素,并遍历执行存储集合里面的命令元素。
  • 设计的一个考虑:其实我们观察,当命令本身就完成命令的操作时候,我们可以忽略掉接收者角色。这是比较重的命令角色。而如果命令本身只是委托接收者执行命令,那么是比较轻的命令角色。这两者从某种角度而言,似乎都很极端。具体的设计的时候我们需要考虑,命令类动态决定调用哪个接收者;
  • Swing库中的撤销重做专题,使用命令模式,客户端和具体的命令执行是分开的,相关的操作和具体的命令集合在一起,为了得到GUI(客户端)的私有属性,要么命令类是GUI的内部类,要么通过命令类的构造方法传入。具体该专题的重点在于撤销重做的执行,然而架构是命令模式的架构。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics