b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

解释器模式举例_lua解释器交互模式_动态编译与解释器模式(21)

电脑杂谈  发布时间:2017-02-22 17:29:35  来源:网络整理

何时使用:

必须保存一个对象在某一时刻的全部或部分状态,以便在需要时恢复该对象先前的状态。 一个对象不想通过提供public权限的,诸如getXXX()的方法让其他对象得到自己IDE内部状态。

优点:

备忘录模式使用备忘录可以吧原先者的内部状态全部保存起来,使是有很“亲密”的对象可以访问备忘录中的数据。 备忘录模式强调了类设计单一责任的原则,即将状态的刻画和保存分开。

备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。

备忘录模式中有三种角色:

备忘录(Memento)角色:将发起人(Originator)对象的内战状态存储起来。备忘录可以根据发起人对象的判断来决定存储多少发起人(Originator)对象的内部状态。备忘录可以保护其内容不被发起人(Originator)对象之外的任何对象所读取。 发起人(Originator)角色:创建一个含有当前的内部状态的备忘录对象。使用备忘录对象存储其内部状态。 负责人(Caretaker)角色:负责保存备忘录对象。不检查备忘录对象的内容。

先看一个简单的实现方式:

//简单的备忘录模式public class SimpleMemento {    public static void main(String[] args) throws Exception {        Originator originator = new Originator();   //发起人,要被保存的对象,也是他创建要保存的信息的        Caretaker caretaker = new Caretaker();      //辅助保存的对象        originator.setState("stateOne");    //设置状态        caretaker.saveMemento(originator.createMemento());      //保存状态        originator.setState("stateTwo");    //修改状态        originator.recoverMemento(caretaker.recoverMemento());  //恢复状态    }}//发起人class Originator {    private String state;    public Memento createMemento(){        return new Memento(state);    }    public void recoverMemento(Memento memento){        this.state = memento.getState();    }    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }}//备忘录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;    }}//负责人class Caretaker {    private Memento memento;    public Memento recoverMemento() throws Exception{        if(memento==null)            throw new Exception("没有保存的状态");        return this.memento;//恢复状态    }    public void saveMemento(Memento memento){        this.memento = memento;//保存状态    }}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-21.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李世民
      李世民

      人家导弹都装在发射筒里真是阿Q精神

    热点图片
    拼命载入中...