zoukankan      html  css  js  c++  java
  • 设计模式之Memento模式

    备忘录模式:在不破坏封装性的前提下。捕获一个对象的内部状态,并在该对象之外保存这个状态。

    这样以后就能够将该对象恢复到原先保存的状态。
    适用场合:比較适合用于功能比較复杂。但须要维护或记录属性历史的类,或者须要保存的属性仅仅是众多属性中的一小部分时。
    这里写图片描写叙述
    首先定义一个Originator(发起人)类

    public class Originator {
    
        private String state;//须要保存的属性(能够定义多个)
    
        public void setState(String state){
            this.state=state;
        }
    
        public String getState(){
            return state;
        }
    
        //创建备忘录。将当前须要保存的信息导入并实例化一个Memento对象
        public Memento createMemento(){
            return new Memento(state);
        }
    
        //恢复备忘录
        public void setMemento(Memento memento){
            state=memento.getState();
        }
    
        public void show(){
            System.out.println("state="+state);
        }
    }

    定义一个Memento(备忘录)类

    public class Memento {
    
        private String state;
    
        //通过构造方法将相关数据导入
        public Memento(String state){
            this.state=state;
        }
    
        public String getState(){
            return state;
        }
    }

    然后定义一个Caretaker(管理者)类。封装Memento

    public class Caretaker {
    
        private Memento memento;
    
        //设置备忘录
        public void setMemento(Memento memento){
            this.memento=memento;
        }
    
        //得到备忘录
        public Memento getMemento(){
            return memento;
        }
    }

    client代码

        public static void main(String[] args) {
    
            //备忘录模式
            Originator originator=new Originator();
            originator.setState("on");//初始状态为on
            originator.show();
    
            Caretaker caretaker=new Caretaker();
            caretaker.setMemento(originator.createMemento());
    
            originator.setState("off");//状态改变为off
            originator.show();
            //恢复原来状态
            originator.setMemento(caretaker.getMemento());
            originator.show();
    }
  • 相关阅读:
    Java数据结构学习Day2_Java基础排序算法
    Java数据结构学习Day1_队列_用数组模拟队列以及环形队列
    Java数据结构学习Day1_稀疏数组
    系统结构实践第七次作业——23组
    第04组 Alpha事后诸葛亮
    第04组 Alpha冲刺(4/4)
    第04组 Alpha冲刺(3/4)
    第04组 Alpha冲刺(2/4)
    第04组 Alpha冲刺(1/4)
    第四组团队git现场编程实战
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7204535.html
Copyright © 2011-2022 走看看