zoukankan      html  css  js  c++  java
  • 备忘录模式

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

     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

    欢迎亲们评论指教。

  • 相关阅读:
    前端与算法 leetcode 28.实现 strStr()
    前端与算法 leetcode 27.移除元素
    npm钉钉脚手架,支持考勤信息获取
    VSCode 使用Settings Sync同步配置(最新版教程,非常简单)
    VSCode 远程开发(带免密)
    vscode保存代码,自动按照eslint规范格式化代码设置
    matplotlib 3D数据-【老鱼学matplotlib】
    matplotlib等高线图-【老鱼学matplotlib】
    matplotlib柱状图-【老鱼学matplotlib】
    matplotlib散点数据-【老鱼学matplotlib】
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413806.html
Copyright © 2011-2022 走看看