备忘录模式

备忘录模式:

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

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、付费专栏及课程。

余额充值