无废话C#设计模式之十八:Command
2009-04-02 08:23:06 来源:WEB开发网核心提示: l 命令模式从结构上说变化非常多,要点就是一个抽象命令接口,无废话C#设计模式之十八:Command(4),抽象命令接口包含两个含义,一是把方法提升到类的层次,如果你不能理解的话请思考这句话“把方法提升到类的层次的好处也就是命令模式的好处”,l 和把状态或算法提到类
l 命令模式从结构上说变化非常多,要点就是一个抽象命令接口。抽象命令接口包含两个含义,一是把方法提升到类的层次,二是使用统一的接口来执行命令。
l 有了前面说的这个前提,我们才可以在调用者角色中做很多事情。比如,延迟命令的执行、为执行的命令记录日志、撤销执行的命令等等。
l 在应用的过程中可以省略一些不重要的角色。比如,如果只有一个执行者或者执行的逻辑非常简单的话,可以把执行的逻辑合并到具体命令角色中;如果我们并不需要使用调用者来做额外的功能,仅仅是希望通过命令模式来解除客户端和接受者之间耦合的话可以省略调用者角色。
l 如果需要实现类似于宏命令的命令组可以使用组合模式来封装具体命令。
l 如果需要实现undo操作,那么命令接受者通常也需要公开undo的接口。在应用中,undo操作往往不是调用一下undo方法这么简单,因为一个操作执行后所改变的环境往往是复杂的。
注意事项
l 不要被命令模式复杂的结构所迷惑,如果你不能理解的话请思考这句话“把方法提升到类的层次的好处也就是命令模式的好处”。
l 和把状态或算法提到类的层次的状态模式或策略模式相比,命令模式可能会产生更多的类或对象。
系列文章:
无废话C#设计模式之一:开篇
无废话C#设计模式之二:Singleton
无废话C#设计模式之三:Abstract Factory
更多精彩
赞助商链接