RSS订阅欢迎来到Java程序员学习天地!
你的位置:首页 » Java开发中的23种模式(五)

Java开发中的23种模式(五)

[java] view plaincopy

  1. public class Receiver {  

  2.     public void action(){  

  3.         System.out.println("command received!");  

  4.     }  

  5. }  

[java] view plaincopy

  1. public class Invoker {  

  2.       

  3.     private Command command;  

  4.       

  5.     public Invoker(Command command) {  

  6.         this.command = command;  

  7.     }  

  8.   

  9.     public void action(){  

  10.         command.exe();  

  11.     }  

  12. }  

[java] view plaincopy

  1. public class Test {  

  2.   

  3.     public static void main(String[] args) {  

  4.         Receiver receiver = new Receiver();  

  5.         Command cmd = new MyCommand(receiver);  

  6.         Invoker invoker = new Invoker(cmd);  

  7.         invoker.action();  

  8.     }  

  9. }  

输出:command received!

这个很哈理解,命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开,熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!

其实每个设计模式都是很重要的一种思想,看上去很熟,其实是因为我们在学到的东西中都有涉及,尽管有时我们并不知道,其实在Java本身的设计之中处处都有体现,像AWT、JDBC、集合类、IO管道或者是Web框架,里面设计模式无处不在。因为我们篇幅有限,很难讲每一个设计模式都讲的很详细,不过我会尽我所能,尽量在有限的空间和篇幅内,把意思写清楚了,更好让大家明白。本章不出意外的话,应该是设计模式最后一讲了,首先还是上一下上篇开头的那个图:


本章讲讲第三类和第四类。

19、备忘录模式(Memento)

主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下:


Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。Memento类是备忘录类,Storage类是存储备忘录的类,持有Memento类的实例,该模式很好理解。直接看源码:

[java] view plaincopy

  1. public class Original {  

  2.       

  3.     private String value;  

  4.       

  5.     public String getValue() {  

  6.         return value;  

  7.     }  

  8.   

  9.     public void setValue(String value) {  

  10.         this.value = value;  

  11.     }  

  12.   

  13.     public Original(String value) {  

  14.         this.value = value;  

  15.     }  

  16.   

  17.     public Memento createMemento(){  

  18.         return new Memento(value);  

  19.     }  

  20.       

  21.     public void restoreMemento(Memento memento){  

  22.         this.value = memento.getValue();  

  23.     }  

  24. }  

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

控制面板
您好,欢迎到访网站!
随机文章
热门文章
热评文章
最近发表