Java设计模式——命令模式

代码 代码 1436 人阅读 | 0 人回复

<
文章目次



号令形式

号令形式很好了解,举个例子,司令员命令让兵士来干件工作,从全部工作的角度去考虑,司令员的感化是,收回心令,心令颠末传递,传到了兵士耳朵里,兵士来施行。那个历程幸亏,三者互相解耦,任何一圆皆不消来依靠其别人,只需求做好本人的事女便止,司令员要的是结果,没有会来存眷到底兵士是怎样完成的。我们看看干系图:
214854j888vdua1cntk7vu.jpg

Invoker是挪用者(司令员),Receiver是被挪用者(兵士),MyCommand是号令,完成了Command接心,持有领受工具,看完成代码:
  1. public interface Command {  
  2.     public void exe();  
  3. }  
  4. public class MyCommand implements Command {  
  5.   
  6.     private Receiver receiver;  
  7.       
  8.     public MyCommand(Receiver receiver) {  
  9.         this.receiver = receiver;  
  10.     }  
  11.   
  12.     @Override  
  13.     public void exe() {  
  14.         receiver.action();  
  15.     }  
  16. }  
  17. public class Receiver {  
  18.     public void action(){  
  19.         System.out.println("command received!");  
  20.     }  
  21. }  
  22. public class Invoker {  
  23.       
  24.     private Command command;  
  25.       
  26.     public Invoker(Command command) {  
  27.         this.command = command;  
  28.     }  
  29.   
  30.     public void action(){  
  31.         command.exe();  
  32.     }  
  33. }  
  34. public class Test {  
  35.   
  36.     public static void main(String[] args) {  
  37.         Receiver receiver = new Receiver();  
  38.         Command cmd = new MyCommand(receiver);  
  39.         Invoker invoker = new Invoker(cmd);  
  40.         invoker.action();  
  41.     }  
  42. }  
复造代码
那个很哈了解,号令形式的目标便是到达号令的收回者战施行者之间解耦,完成恳求战施行分隔,熟习Struts的同窗该当明白,Struts实在便是一种将恳求战显现别离的手艺,此中一定触及号令形式的思惟!
引见
企图:将一个恳求启拆成一个工具,从而使您能够用差别的恳求对客户停止参数化。
次要处理:正在硬件体系中,举动恳求者取举动完成者凡是是一种松耦开的干系,但某些场所,比如需求对举动停止记载、打消或重做、事件等处置时,这类没法抵御变革的松耦开的设想便没有太适宜。
什么时候利用:正在某些场所,比如要对举动停止"记载、打消/重做、事件"等处置,这类没法抵御变革的松耦开是分歧适的。正在这类状况下,怎样将"举动恳求者"取"举动完成者"解耦?将一组举动笼统为工具,能够完成两者之间的紧耦开。
怎样处理:经由过程挪用者挪用承受者施行号令,挨次:挪用者→承受者→号令。
枢纽代码:界说三个角色:1、received 真实的号令施行工具 2、Command 3、invoker 利用号令工具的进口
使用真例:struts 1 中的 action 中心掌握器 ActionServlet 只要一个,相称于 Invoker,而模子层的类会跟着差别的使用有差别的模子类,相称于详细的 Command。
长处: 1、降低了体系耦开度。 2、新的号令能够很简单增加到体系中来。
缺陷:利用号令形式大要会招致某些体系有过量的详细号令类。
利用场景:以为是号令的处所皆可使用号令形式,比如: 1、GUI 中每个按钮皆是一条号令。 2、模仿 CMD。
留意事项:体系需求撑持号令的打消(Undo)操纵战规复(Redo)操纵,也能够考虑利用号令形式,睹号令形式的扩大。

免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则