感想
命令模式:将请求、命令、动作等封装成对象,这样可以让项目使用这些对象来参数化其他对象。是的命令的请求者和执行者解耦。
例子以一行2个按钮的遥控器作示范。
如下图所示,若添加新的设备,则需要在该类中添加新的成员变量,及实现的方法中添加更多的代码,使得代码耦合度高,相互依赖大,影响后期的维护以及开发。
1.将请求、命令、动作等分类为一个接口,可以当作为执行命令,如下:
1 | public interface Command { |
2.设备类,如下:
1 | public class Light { |
1 | public class Stereo { |
3.将遥控器上面的按钮划分为3种,如下:
1 | public interface Control { |
4.设置设备的命令,如灯的开关,音响的开关,设置音响的大小声量,如下:
1 | public class LightOffCommand implements Command { |
1 | public class LightOffCommand implements Command { |
1 | public class StereoAddVolCommand implements Command { |
1 | public class StereoOffCommand implements Command { |
1 | public class StereoOnCommand implements Command { |
1 | public class StereoSubVolCommand implements Command { |
5.可以设置按钮为空命令模式,如下:
1 | public class NoCommand implements Command { |
6.可以设置组合键,如下:
1 | public class MarcoCommand implements Command { |
7.实现遥控器,如下:
1 | public class CommandModeControl implements Control { |
8.遥控器的使用,如下:
1 | public class ControlTest { |
最后,通过接口的统一并实现接口内的方法,使遥控器中的控制更加容易及规范,加上遥控器中对排列的设计以及记录命令执行的顺序,添加了遥控器的功能,该命令模式在其中运用合理。