命令模式是将具体的一个或一组操作封装成一个独立命令的设计方法。
所有命令都实现同一个Command接口和其中的execute方法,调用者找到需要处理的命令并调用execute方法执行。
《HeadFirst设计模式》中提到的例子
智能家居电器厂商提供控制多种电器API,如电灯开关,风扇调速和开关,音响播放等,遥控器面板上有固定的按钮数,且每一排的可编程插槽上需要安装不同的装置来控制这些电器,应该如何设计遥控器的API?
解决方法
考虑到电器的api是可变的,但遥控器样式相对固定,如果将每个按键的处理直接绑定api,耦合太高后续更新成本会变大。使用命令模式解决问题,遥控器的每一个按键功能在程序运行时才做绑定,保证扩展性。
1.定义一个Command接口,包含一个execute方法
public interface Command {
public void execute();
}
2.因为每种电器需要开和关2种操作,因此需要为每种电器定义2个