设计模式笔记之 - Command & Active Object
Command模式:最简单的模式之一,虽然简单,但是也需要我们灵活的发现它的用武之地,充分的发挥面向对象的思想,巧妙的应用就会收到突出的效果。
接口:模式的主要因素之一。
简单的接口代码:
{
void Do();
}
适用的场合:
1. 简单的Command:主要出现在需要在多个对象执行相似的动作,比如开关,电视机有开关,电风扇有开关,点灯也有开关,这样的操作就可以用Command模式来做,通过调用接口的Do()方法,执行所有电器的开关动作,而不管传进来的对象是什么。
2. 事务操作:可以集中所有事务于一个方法里调用,封装了内部处理,比如数据验证
a) 实体上解耦和时间上解耦,分开数据验证和数据操作;
b) 时间上解耦,可以达到在处理事务的时候先验证完成所有的,在一起执行。
3. UNDO:可以给Command模式增加Undo()方法,例如可以更灵活的处理多个对象的堆栈方法,一个画图程序,用户调用了相应图形对象的Do()方法,该对象在相应的地方执行完后即被压入堆栈,当用户点击撤销按钮的时候,该对象被弹出,然而只需要调用该对象的Undo()方法即可轻松的撤销操作,因为通常一个对象的Do()方法和Undo()方法在实现上都是相近的。
4. Active Object模式:Command模式的变种,主要用在链表或ArrayList之中的对象的执行相应的通用接口方法。此模式用在多线程的处理是一个很好的实践可以实现RTC,RTC的名字意味着Command实例不会阻塞。
Command模式的简单性掩盖了它的多功能性。Command模式可以应用于多种不同的美妙的用途,范围设计数据库和事务操作、设备控制、多线程核心以及GUI的do/undo管理。