命令模式

命令模式,命令模式把一个请求或者是一个操作封装到一个对象中,

而成使你可以用不同的请求对客户端参数化,

也可以实现对请求排队或者是记录请求日志,同时还可以提供命令的撤销和恢复功能。

命令模式是对命令的封装,命令模式把发出命令的责任和执行命令这两个功能块分离,

将这两个功能分别委托给不同的对象。

每一个命令都是一个操作:请求的一方发出请求其要求执行一个操作,接收的一方收到请求,并执行操作,

命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,

更不必知道请求时怎么被接收,以及操作是否被执行,何时被执行,以及时怎么被执行的。

 

 

 

命令模式的一个用途:队列请求和撤销请求

这里使用还是利用前面的餐馆模型来分析,在前面制作出来的 Demo 其实有不足的地方的,

那就是,你每一次都只能保存一个命令,也就是每一张订单上都只有一道食品,

如果一个顾客要点三道菜的话,那请求者还得同时发三个请求才能实现一名顾客点多道菜。

同时,如果用户点了食品后突然又不想要这份食品了,那么就需要撤销先前点的这份食品(也就是撤销命令),

所以必须改进,这里只需要修改 Waiter (在命令模式中扮演请求者 Invoker 这个角色)类和 Main 函数就 OK 了,

posted @ 2010-05-10 09:15  bndy  阅读(669)  评论(0编辑  收藏  举报