读书人

现实中遇到的command模式

发布时间: 2012-10-19 16:53:36 作者: rapoo

实际中遇到的command模式

?


??????

?


?????



command 模式 就是 client去 调用invoker,invoker去调用command,command去调用receiver,然后receiver在client显示。




我在RCP项目中,要实现一个命令,并且有它的undo,redo功能。

比如我在一个数据操作类里,写上

 public void editFormalParam(Client tab, Parameter pParam) {        EditParamCommand cmd = new EditParamCommand(model);        ........................................        final EditParamCommand pCmd = cmd;        SafeAction safeAction = new SafeAction(BuildingblockeditorPluginResources.SACFACTION.toString()) {            public void runSafe() {                getCommandStack().execute(pCmd);            }        };        safeAction.run();    }



这时候client要执行editFormalParam方法, 就会去执行 command里的execute方法。

这个数据操作类就是一个invoker,它去执行command里的execute方法。

我们同时在command类里实现了

public class EditParamCommand {   private Model model;   private Object new;   private Object old;   public EditorParamCommand(Model model,Object new,Object old){     this.model=model;     this.new=new;     this.old=old;   }   public void execute(){    model.get...;    mode.set...;  }   public void redo(){    model.set(new);   }  public void undo(){    model.set(old);  }}



这里的model就是receiver.

然后把model变化后的数据返回client,刷新。

?

读书人网 >软件架构设计

热点推荐