1700463585
1700463586
只要你认为是命令的地方就可以采用命令模式,例如,在GUI开发中,一个按钮的点击是一个命令,可以采用命令模式;模拟DOS命令的时候,当然也要采用命令模式;触发—反馈机制的处理等。
1700463587
1700463588
1700463589
1700463590
1700463592
设计模式之禅 15.4 命令模式的扩展
1700463593
1700463594
15.4.1 未讲完的故事
1700463595
1700463596
上面的例子我们还没有说完。想想看,客户要求增加一项需求,那是不是页面也增加,同时功能也要增加呢?如果不使用命令模式,客户就需要先找需求组,然后找美工组,再找代码组……你想让客户跳楼啊!使用命令模式后,客户只管发命令模式,例如,需要增加一项需求,没问题,我内部调动三个组通力合作,然后把结果反馈给你,这也正是客户需要的。那这个要怎么修改呢?想想看,很简单的!在AddRequirementCommand类的execute方法中增加对PageGroup和CodePage的调用就可以了,修改后的代码如代码清单15-19所示。
1700463597
1700463598
代码清单15-19 修改后的增加需求
1700463599
1700463600
public class AddRequirementCommand extends Command{
1700463601
1700463602
//执行增加一项需求的命令
1700463603
1700463604
public void execute(){
1700463605
1700463606
//找到需求组
1700463607
1700463608
super.rg.find();
1700463609
1700463610
//增加一份需求
1700463611
1700463612
super.rg.add();
1700463613
1700463614
//页面也要增加
1700463615
1700463616
super.pg.add();
1700463617
1700463618
//功能也要增加
1700463619
1700463620
super.cg.add();
1700463621
1700463622
//给出计划
1700463623
1700463624
super.rg.plan();}
1700463625
1700463626
}
1700463627
1700463628
看看,是不是解决问题了?客户Client只需要发布命令,至于如何执行这个命令,是协调一个对象,还是两个对象,都不需要关心,命令模式做了一层非常好的封装。
1700463629
1700463630
1700463631
1700463632
1700463633
设计模式之禅 15.4.2 反悔问题
1700463634
[
上一页 ]
[ :1.700463585e+09 ]
[
下一页 ]