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

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

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

备忘录角色对任何对象都提供一个接口,备忘录角色的内部所存储的状态就对所有对象公开,因此是破坏封装性的。

按照定义中的要求,备忘录角色要保持完整的封装。最好的情况便是:备忘录角色只应该暴露操作内部存储属性的的接口给“备忘发起角色”。

如果上例中,我们把备忘录以发起人的私有内部类的方式实现的话,那它就只能被发起人访问了,这正好就符合备忘录模式的要求,但是我们的负责人是需要存放备忘录的引用的,于是,我们提供一个公共的接口,他是空的,我们用备忘录实现它,主要就是利用其中的类型信息,具体实现如下:

//备忘录模式public class BlackMemento {    public static void main(String[] args) {        BlankOriginator originator = new BlankOriginator(); //发起人        BlackCaretaker caretaker = new BlackCaretaker();    //负责人        originator.setState("stateOne");    //设置状态        caretaker.saveMemento(originator.createMemento());  //保存信息        originator.setState("stateTwo");    //修改状态        originator.recoverMemento(caretaker.recoverMemento());//恢复状态    }}intece MementoIF {}//发起人class BlankOriginator {    private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }    public MementoIF createMemento(){        return new Memento(state);    }    public void recoverMemento(MementoIF memento){        this.setState(((Memento)memento).getState());    }    //以内部类实现备忘录角色    private class Memento implements MementoIF{         private String state;        private Memento(String state){            this.state = state;        }        private String getState() {            return state;        }    }}//负责人class BlackCaretaker {    private MementoIF memento;    public MementoIF recoverMemento(){        return memento;    }    public void saveMemento(MementoIF memento){        this.memento = memento;    }}


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

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

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