为一个开关设计程序,这个开关有N按钮,同时对应N个插槽,要求能够接入任何电器厂商的API,从而能够控制任何电器。目前只有电灯和电视两种电器,要求写一个Demo程序,按钮1能够打开电灯。按钮2能够打开电视而且切换到上一次打开的频道。打开电视换频道须要打开机顶盒而且对机顶盒切换频道。设计
每一个厂商的API不一致,且每一个电器的打开流程都不同,咱们须要将这些差别封装起来,才能够实现新增电器时不须要修改开关程序。对象
上面的例子主要经过Command模式将执运算块(几个对象和一组动做)打包变成一个统一的excute方法。Comand除了能够实现excute,还能够实现undo(撤销),只须要为每一个命令实现undo方法,就能够实现撤销的动做。Command模式的一个常见的应用就是任务池,咱们能够自定义不少任务,而后封装成command对象,交给任务池逐个执行。blog