备忘录模式

备忘录模式:

用一个对象来存储另外一个对象的内部状态的快照,关键点是在不破坏封装的情况下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在合适的时候,把这个对象还原。

package com.jerry.design.memento;



	// 测试类
public class Test {
	 private static Originator o = new Originator();  
	    private static Caretaker c = new Caretaker();  
	    public static void main(String[] args) {  
	        o.setState("On");  
	        c.setMemento(o.createMemento());  
	        o.setState("Off");
	        System.out.println(c.getMemento());
	    }  
}
interface NarrowMemento {  
}  
class Originator {  
    private String state;  
    private NarrowMemento memento;  
    public Originator() {  
    }  
    public NarrowMemento createMemento() {  
        memento = new Memento(this.state);  
        return memento;  
    }  
    public void restoreMemento(NarrowMemento memento) {  
        Memento aMemento = (Memento) memento;  
        this.setState(aMemento.getState());  
    }  
    public String getState() {  
        return this.state;  
    }  
    public void setState(String state) {  
        this.state = state;  
    }  
    // 内部类  
    protected class Memento implements NarrowMemento {  
        private String savedState;  
        private Memento(String someState) {  
        	savedState = someState;  
        }  
        private void setState(String someState) {  
        	savedState = someState;  
        }  
        private String getState() {  
            return savedState;  
        }  
      
    }  
    public NarrowMemento getNarrowMemento() {  
        return memento;  
    }  
}  
class Caretaker {  
    private NarrowMemento memento;  
    public NarrowMemento getMemento() {  
        return this.memento;  
    }  
    public void setMemento(NarrowMemento memento) {  
        this.memento = memento;  
    }  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值