设计模式之命令模式,使用命令模式实现遥控器及总结

  

设计模式之命令模式,使用命令模式实现遥控器及总结

  

先来看看项目结构:
设计模式之命令模式,使用命令模式实现遥控器及总结

  

说明:   

1:命令接口对象

  

2:电灯打开或关闭命令

  

3:音响打开或关闭命令

  

4:音响音量增加或减少命令

  

凯哥Java (kaigejava)

  

电灯开或关代码:

  

/* *   

      <李>   

    由kaigejava 2019/8/30。

      李   <李>关灯的命令对象李   
  

*/公共类LightOffCommand实现ICommandInterface {

  

私人LightAPI光;

  

公共LightOffCommand (LightAPI光){

  
 <代码>。光=, 
  

}   

@Override   

公共空execute () {

  
 <代码> light.Off();  
  

}   

@Override   

公共空undo () {

  
 <代码> light.On();  
  

}   

}   

增加音响音量的类:

  

/* *   

      <李>   

    由kaigejava 2019/8/30。

      李   <李>给音响增加音量命令对象李   
  

*/公共类StereoAddVolCommand实现ICommandInterface {

  

私人StereoAPI setreo;

  

公共StereoAddVolCommand (StereoAPI立体声){

  
 <代码>。setreo=音响; 
  

}   

@Override   

公共空execute () {

  
 <代码> int卷=setreo.GetVol ();
  
  如果(vol<11)
  
  {
  
  setreo.AddVolume(+ +卷);
  
  } 
  

}   

@Override   

公共空undo () {

  
 <代码> int卷=setreo.GetVol ();
  
  如果(vol> 0)
  
  {
  
  setreo.downVolume(卷);
  
  } 
  

}   

}   

命令模式总结:

  

1:内容

  

什么是命令模式?命令模式定义。参见上一篇

  

2:角色

  

调用程序:调用者(如遥控器对象)

  

命令:命令接口或抽象类(如命令案例中命令接口)

  

收到命令具体实现类(如电灯开对象,音响音量加/减对象)

  

3:执行顺序

  

调用者——在接收者——在命令

  

4:使用场景

  

当行为的请求者与行为的实现者之间需要解耦的时候(如遥控器项目,请求者是遥控器,行动实现者是各个不同的家电设备),这种场景下可以使用

  

5:何时使用

  

在某些场合,比如要对行为进行“记录,撤销/重做,事务“等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者“解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。在某些场合,比如要对行为进行“记录,撤销/重做,事务“等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者“解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。

  

6:优缺点

  

优点:   

1,降低了系统耦合度;

  

2,新的命令可以很容易添加到系统中去。

  

缺点:   

使用命令模式可能会导致某些系统有过多的具体命令类。比如我们遥控器项目中就多了很多具体命令对象。

  

联系凯哥——》凯哥Java (kaigejava)或凯哥个人博客:www.kaigejava.com博客上私聊凯哥哦~

  

7:注意事项

  

系统需要支持命令的撤销(撤销)操作和恢复(重做)操作,也可以考虑使用命令模式

设计模式之命令模式,使用命令模式实现遥控器及总结