设计模式笔记-命令模式
命令模式
最近在重新看设计模式,看了《Head First设计模式(中文版)》中的命令模式,跟上次刚入职看的感觉有点不一样,还是记录一下,便于以后查阅。
作用:将 动作的请求者 和 动作的执行者 解耦。
书中例子:场景,有很多电器都有开、关的方法;问题:如果遥控器和电器不解耦,遥控器会和电器有很多代码(例如if else),新增电器就要改代码。
要将 遥控器 和 电器 解耦,把电器的开和关都放在命令里,遥控器不需要知道电器是怎么执行的,只需要调用命令就可以执行电器的方法,达到开或者关的需求。
设计对象:
1.实现 command 接口 的 N个具体命令 ,将命令的动作和电器(接收者)绑在一起,分别控制各个电器(接收者)的开关,
2.根据客户(使用者)需求设置好 遥控器(调用者) 上每个按钮的命令
2.遥控器(调用者)按下按钮,调用命令上的执行方法,从而达到控制具体的电器开关
代码实现:
command 接口:
灯对象:
操作开灯命令对象:
遥控器(调用者)对象:
客户(请求者):
总结:接收者注入在 相对应命令对象 里,调用者通过 调用命令 操作执行者 ,可以达到请求者和 执行者的 解耦。