大话设计模式-----备忘录模式

1、思想

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。以打游戏为例,将打boss之前的状态保存到备忘录里。打完boss状态会发生改变,如果感觉与boss决斗不理想,可以通过备忘录恢复初始状态,从而重新打boss。

2、代码

package 测试;
/**
 * 发起人类,例如游戏玩家
 * @author Administrator
 *
 */
class Originator{
    private String state;
    
    public Memento createMemento(){
        return (new Memento(state));
    }
    public void setMemento(Memento memento){
        state = memento.getState();
    }
    public void show(){
        System.out.println("state:"+state);
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
}
/**
 * 备忘录类    
 * @author Administrator
 *
 */
class Memento{
    private String state;
    public Memento(String state){
        this.state = state;
        
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    
}
/**
 * 管理者类,专门管理备忘录的类
 * @author Administrator
 *
 */
class Caretaker{
    private Memento memento;

    public Memento getMemento() {
        return memento;
    }

    public void setMemento(Memento memento) {
        this.memento = memento;
    }
    
}
public class Main5{
    public static void main(String [] args){
        Originator o = new Originator();
        o.setState("on");
        o.show();
        Caretaker c = new Caretaker();
        c.setMemento(o.createMemento());
        //游戏玩家改变状态
        o.setState("off");
        o.show();
        //游戏玩家恢复原来的状态
        o.setMemento(c.getMemento());
        o.show();
    
        
    }
    
}

3、结构图

猜你喜欢

转载自blog.csdn.net/g1607058603/article/details/82316387
今日推荐