命令模式
假如你是一个程序员,你的老板让你实现一个遥控器,可以用来控制各种家电,例如电灯、风扇、热水器、音响设备和其他类似的可控制装置
最简单的方法:当按钮按下时,进行判断,如果按下的是电灯按钮,那么打开电灯、如果按下的是风扇按钮,那么打开风扇…
if(button == 电灯){
打开电灯
}else if(button == 风扇){
打开风扇
}else if(button == 热水器){
打开热水器
}else if(button == 车库){
打开车库
}
这样做会有两个缺点,一是你要让遥控器知道所有家电的打开方法,这已经是一件不太容易的事情了。二是你要写大量的if else语句,这样做及其不利于维护,每当新的家电要加载到遥控器中时,你都要去更改一遍代码,这样做没完没了
怎么解决这个问题呢,采用命令模式将”动作的请求者”从”动作的执行者“对象中解耦。添加一个中间的命令对象。
怎么理解呢,将遥控器按下,电灯打开,这一过程解耦
变为 遥控器按下某家电按钮,将该家电传入对应的命令对象 命令对象执行命令,家电打开
这样做的优点是:1.降低了系统耦合度。 2.当新的家电要加载时,我们只需要添加一个命令对象即可
命令对象:
当遥控器按下电灯按钮时,遥控器执行:
- 创建一个电灯对象
- 执行电灯对象的execute()方法
这样便大大简化了遥控器的命令复杂度
将遥控器设为一个对象即: