命令
命令是一个对象向另一个或多个对象发送的指令信息。命令的发送方负责下达指令,接收方则根据命令触发相应的行为。作为一种数据(指令信息)驱动的行为型设计模式,命令模式(Command)能够将指令信息封装成一个对象,并将此对象作为参数发送给接收方去执行,以使命令的请求方与执行方解耦,双方只通过传递各种命令过象来完成任务。此外,命令模式还支持命令的批量执行、顺序执行以及命令的反执行等操作。
1 对电灯的控制
现实生活中,命令模式随处可见,如遥控器对电视机发出的换台、调音量等指令;将军针对士兵执行进攻、撤退或者先退再进的任务所下达的一系列命令;餐厅中顾客为了让厨师按照自己的需求烹饪所需的菜品,需要与服务员确定的点菜单。除此之外,在进行数据库的增、删、改、查时,用户会向数据库发送SQL语句来执行相关操作,或提交回滚操作,这也与命令模式非常类似。我们先从一个简单的电灯控制系统入手,如图21-1所示。其中开关可被视为命令的发送(请求)方,而灯泡则对应为命令的执行方。我们先从命令执行方开始代码实战。灯泡类一定有这样2个行为:通电灯亮,断电灯灭,请参看代码清单1-1。
public