• 设计模式之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();
    }
  • 相关阅读:
    springsecurity-微服务-springsecurity工具类封装
    springsecurity-微服务-认证授权的过程
    springsecurity-CSRF
    springsecurity-自动登录实现
    Vulnhub-靶机-DC: 9
    Xss-labs-level3-6
    靶机-生成自有账户和密码提权
    靶机-敲击相关方式汇总
    Vulnhub-靶机-DIGITALWORLD.LOCAL: BRAVERY
    Xss-labs-level1-2
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7204535.html
Copyright © 2020-2023  润新知