2009年2月3日星期二

可能不知道我在说什么

紧用于记录,一个小请求流程 或 叫前端框架。并不是在说Command模式,只是记录一个流程。

1. 在action或screen(就是servlet)里
创建一个Command(代表一次请求)对象,信息包括请求的AO对象名、调用AO对象的方法名、和这次请求的参数需要封装(一般用到DO对象)到该Command对象里。
cmd = new CommandSurport("xxxAO", "xxxMethod");
cmd.setParameter();//其实就是放到Map里。

2. 还是在那个action里
在Spring容器中,选择一个CommandDispatcher,其实就是CommandDispatcherLogic(奇怪没有根据Command对象选择)。CommandDispatcher的作用就是把Command分发出去,其实就是执行的开始。
CommandDispatcher.execute(cmd);

3. 在CommandDispatcher.execute里
根据Command对象里的AO名信息从spring里获得(创建)指定AO对象(非单例)。在这里同时使用到spring的BeanPostProcessor(实现类为ApplicationObjectPostProcessor),把command设置到AO对象(其实是AO的父类ActionEvent)里。并把Command对象的参数(在第一步设置的),设置到AO对应的属性上(参看ApplicationObjectPostProcessor类)。

4. 执行AO.execute()
execute方法是在AO的父类ActionEvent里。
根据Command信息后的要调用的方法名如abc(第1步设置的),调用的AO对象的doAbc方法。
这个doAbc就是我们业务要做的。在这个AO对象里,有Command对象(在父类ActionEvent属性里)、和最主要的请求参数已经设置到AO对象的属性上了。有了这些就可以实现我们想要的逻辑。

到此完成,已经很清楚,没有必要有序列图。
逗了一个圈子,在doAbc里根据请求信息,执行业务逻辑。不知道这样做的好处是什么!?

没有评论: