WEB开发网
开发学院软件开发C语言 无废话C#设计模式之十八:Command 阅读

无废话C#设计模式之十八:Command

 2009-04-02 08:23:06 来源:WEB开发网   
核心提示: 代码执行结果如下图:代码说明l 在代码实例中,我们只考虑了防止请求过频的控制,无废话C#设计模式之十八:Command(3),并且也没有考虑客户端和服务端通讯的行为,在实际操作中并不会这么做,我们可以把一些创建型模式和结构型模式与命令模式结合使用,实现要点l 从活动序列上来说通常是这样的一

代码执行结果如下图:

无废话C#设计模式之十八:Command 

代码说明

l         在代码实例中,我们只考虑了防止请求过频的控制,并且也没有考虑客户端和服务端通讯的行为,在实际操作中并不会这么做。

l         Man类是接受者角色,它负责请求的具体实施。

l         GameCommand类是抽象命令角色,它定义了统一的命令执行接口。

l         MoveXXX类型是具体命令角色,它们负责执行接受者对象中的具体方法。从这里可以看出,有了命令角色,发送者无需知道接受者的任何接口。

l         Server类是调用者角色,相当于一个命令的大管家,在合适的时候去调用命令接口。

何时采用

有如下的需求可以考虑命令模式:

l         命令的发起人和命令的接收人有不同的生命周期。比如,下遗嘱的这种行为就是命令模式,一般来说遗嘱执行的时候命令的发起人已经死亡,命令是否得到有效的执行需要靠律师去做的。

l         希望能让命令具有对象的性质。比如,希望命令能保存以实现撤销;希望命令能保存以实现队列化操作。撤销的行为在GUI中非常常见,队列化命令在网络操作中也非常常见。

l         把命令提升到类的层次后我们对类行为的扩展就会灵活很多,别的不说,我们可以把一些创建型模式和结构型模式与命令模式结合使用。

实现要点

l         从活动序列上来说通常是这样的一个过程:客户端指定一个命令的接受者;客户端创建一个具体的命令对象,并且告知接受者;客户端通过调用者对象来执行具体命令;调用者对象在合适的时候发出命令的执行指令;具体命令对象调用命令接受者的方法来落实命令的执行。

上一页  1 2 3 4 5  下一页

Tags:废话 设计模式 十八

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接