• 备忘录模式


    设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

     1 package designPattern;
     2 /**
     3  * 备忘录模式
     4  * @author Administrator
     5  */
     6 public class B18_MementoTest {
     7 
     8     /**
     9      * 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
    10      * 这样以后就可将该对象恢复到原先保存的状态
    11      */
    12     public static void main(String[] args) {
    13         Originator originator = new Originator();
    14         originator.setState("in good condition");
    15         Memento memento = new Memento(originator.getState());
    16         Caretaker c = new Caretaker();
    17         c.setMemento(memento);
    18         System.out.println(c.getMemento().getState());
    19     }
    20 }
    21 //momento备忘录存储原发器对象的内部状态。
    22 class Memento {
    23 
    24     private String state;
    25 
    26     public Memento(String state) {
    27         this.state = state;
    28     }
    29 
    30     public String getState() {
    31         return state;
    32     }
    33 
    34     public void setState(String state) {
    35         this.state = state;
    36     }
    37 }
    38 //originator 原发器创建一个备忘录,用以记录当前时刻它的内部状态。使用备忘录恢复内部状态.
    39 class Originator {
    40 
    41     private String state;
    42 
    43     public String getState() {
    44         return state;
    45     }
    46 
    47     public void setState(String state) {
    48         this.state = state;
    49     }
    50     
    51     public Memento createMemento() {
    52         return new Memento(state);
    53     }
    54     
    55     public void setMemento(Memento memento) {
    56         state = memento.getState();
    57     }
    58     
    59     public void showState(){
    60         System.out.println(state);
    61     }
    62 }
    63 //caretaker 负责保存好备忘录。不能对备忘录的内容进行操作或检查
    64 class Caretaker {
    65     
    66     private Memento memento;
    67     
    68     public Memento getMemento(){
    69         return this.memento;
    70     }
    71     
    72     public void setMemento(Memento memento){
    73         this.memento = memento;
    74     }
    75 }

    环境:JDK1.6,MAVEN,tomcat,eclipse

    源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar

    欢迎亲们评论指教。

  • 相关阅读:
    js用8421码实现10进制转2进制
    什么?toggle(fn1, fn2)函数在1.9版本jq被移除? 来来来,自己撸一个
    js获取鼠标点击的对象,点击另一个按钮删除该对象
    html5小结
    iphone状态栏高度?
    制作手机相册 全屏滚动插件fullpage.js
    js 相关知识整理(一)
    css 居中问题
    进度条
    @Html.Raw()
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413806.html
Copyright © 2020-2023  润新知