`
e3002
  • 浏览: 77771 次
社区版块
存档分类
最新评论

command模式

阅读更多

刚看了个帖子才对command模式有了更深的理解

不使用设计模式时我们一般这样实现某个功能


发出请求的应用程序和提供处理请求服务的接受对象(Receiver Object)集合之间彼此是紧密关联的,因为它们之间直接相互交互。这导致了在调用者(invoker)实现中会包含大量的if条件语句。如果增加一个新的命令的话,那在调用者中会增加n个if判断。违背面向对象的原则。所以命令模式就是把中间的if判断抽象成接口,每个实现类实现一种命令,而这些命令通过真正的接受者来执行具体功能。

  引用:使用命令模式,代表客户发布请求的调用者(invoker)和服务的处理者??接受对象(Receiver Object)之间不具有耦合性。命令模式推荐创建一个可以为响应客户请求而执行处理或者采取动作的抽象。指定这个抽象声明一个被其它不同的具体的实现者所实现的共同接口,这些具体的实现者称之为命令对象(Command Objects)。每一个命令对象(Command Object)代表一种不同的客户请求和对其进行的相应处理。在图30.2中,command接口代表了这个抽象。它声明一个excute方法,它由两个具体的实现者(类)ConcreteCommand_1和ConcreteCommand_2。
 
Figure 30.2: Command Object Hierarchy 
一个给定的命令对象(command Object)负责提供处理它所代表的请求的功能,但是命令对象并不包含此功能的真实实现,它是通过使用接受对象(Receiver Object)来提供处理功能。(如图30.3)
 

例子可以google就不说了,可参考http://www.javaresearch.org/article/42108.htm

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics