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();
    		
    	}
    	
    }
    

      

  • 相关阅读:
    Eth-Trunk 技术
    MSTP技术
    STP生成树原理及不足
    表示数值的字符串(python)
    字符流中第一个不重复的字符(python)
    连续子数组的最大和(python)
    和为S的两个数字(python)
    数组中重复的数字(python)
    构建乘积数组(python)
    idea中查看类层级class hierarchy
  • 原文地址:https://www.cnblogs.com/zcy-backend/p/6718938.html
Copyright © 2011-2022 走看看