首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

现实中遇到的command模式

2012-10-19 
实际中遇到的command模式??????? ?????? command 模式 就是 client去 调用invoker,invoker去调用command,c

实际中遇到的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,刷新。

?

热点排行