财商书苑
全民财商训练提升,认真负责我们的每句话

命令模式-JAVA

在编写代码的时候,有时并不能控制方法执行的时机与上下文,在这种情况下,可以将方法封装在对象的内部。通过在对象内部存储调用方法所需要的信息,就可以让客户端或者服务决定何时调用该方法。

命令模式的意图是将请求封装在对象的内部。如经典的swing库就采用了该模式,允许为每个JmenuItem关联一个ActionListener对象。

设计图如下(PowerDesigner):

命令模式-java

命令模式-java

 

使用方法:

对比一下真实案例就非常清晰了:

可以很清晰的看到ActionListener等同于Command接口,addActionListener方法等同于setCommand方法。而具体的 ActionEvent则是确切的Reciver对象。

即:给JMenuItem添加一个命令抽象命令ActionListener的实现(由匿名内部类现实),当事件触发后调用actionPerformed方法(等同于execute方法),最后交给最终的接受者(ActionEvent)执行。

小结:

1. 由于命令模式将请求封装在了对象中,因此可以像操作对象那样来操作请求。

2. 命令模式提供了除模板方法模式外的另一种设计钩子(hook)的方法。

3. 通常命令模式会和其他模式一起使用,如可以作为模板方法模式的一种替代模式,也经常和调停者模式与备忘录模式配合使用。

 

使用PowerDesigner打开 命令模式-java设计图 ,点击[Language]–>[Generate Java Code…] 即可生成本文中用到的代码。

 

 

赞(0)
未经允许不得转载:财商书苑-全民财商训练提升 » 命令模式-JAVA

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址