zoukankan      html  css  js  c++  java
  • 设计模式14:备忘录模式

    备忘录模式适用于功能比较复杂的,但需要维护或者记录属性的类,对象可以根据备忘录回滚到上一状态。

    所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

    客户不与备忘录类耦合,与备忘录管理类耦合。

    uml:

    代码:

    public class Memento {
    	
    	private String state = null;
    
    	public Memento(String state) {
    		this.state = state;
    	}
    
    	public String getState() {
    		return state;
    	}
    
    }
    
    public class Caretaker {
    	
    	private Memento memento = null;
    
    	public Memento getMemento() {
    		return memento;
    	}
    
    	public void setMemento(Memento memento) {
    		this.memento = memento;
    	}
    
    }
    
    public class Organizer {
    
    	private String state = null;
    
    	public String getState() {
    		return state;
    	}
    
    	public void setState(String state) {
    		this.state = state;
    	}
    	
    	public Memento createMemento() {
    		return new Memento(state);
    	}
    	
    	public void loadMemento(Memento memento) {
    		state = memento.getState();
    	}
    	
    	public void show() {
    		System.out.println("State: " + state);
    	}
    }
    
    public class MementoDemo {
    
    	public static void main(String[] args) {
    		Organizer organizer = new Organizer();
    		organizer.setState("On");
    		organizer.show();
    		
    		Caretaker caretaker = new Caretaker();
    		caretaker.setMemento(organizer.createMemento());
    		
    		organizer.setState("Off");
    		organizer.show();
    		
    		organizer.loadMemento(caretaker.getMemento());
    		organizer.show();
    		
    	}
    	
    }
    

      

  • 相关阅读:
    从 JavaScript 到 TypeScript 系列
    有了 indexOf,为什么 ECMAScript 7 还添加了 Array.prototype.include
    网站部署 HTTPS 中需要做的事情
    从 HTTP 到 HTTPS
    从 HTTP 到 HTTPS
    co.js
    记jQuery.fn.show的一次踩坑和问题排查
    JavaScript
    二、HttpClient
    1、网络爬虫
  • 原文地址:https://www.cnblogs.com/zcy-backend/p/6718938.html
Copyright © 2011-2022 走看看