Command模式,一个传说中非常简单的模式,但是其应用还真不简单。
通过接口将某些方法封装起来以达到解除系统逻辑互联关系的耦合的效果,并且实现了Command接口的类对象可以在系统中自由的重新组合,参数传递也非常方便,为系统带来灵活性的提升。
其应用范围包括数据库的事务操作、设备控制、多线程核心以及GUI的do/undo操作。
ActiveObject模式是使用Command模式的应用之一,这是实现多线程控制的一种技术。
下面是一个简单的实例:
1. 一个Command接口,定义了Execute方法。
2. 两个类SleepingCommand和PrinterCommand实现了Command中的Execute方法。
在PrinterCommand中调用Execute时打印一个字符并创建一个新的PrinterCommand在指定的延时后执行。
SleepingCommand表示一个睡眠中的Command,他在执行时只是简单的将自己放到链表末尾直到等待的事件(设定的延时到来)发生它才会将自己唤醒等待下一步执行。
3. 一个StopCommand类,实现了用于终止Command链循环的Execute方法。
4. 一个ActiveObjectManager对象,维护了一个Command对象链表,用户可以像Manager中AddCommand对象或者便利链表并依次调用Command对象的Execute方法执行任务。