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

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

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

输出:

14667truetrue00 2 3 4 5 8 9 10 11 12 13 14667truetrue00 2 3 4 5 8 9 10 11 12 13 a size=11l size=11

这里的迭代器就是典型的迭代器模式的实现(不过此处的迭代器没有实现remove()方法,查找集合的remove()方法实现也简单),介绍得有点多了,把集合都给介绍了...

10、中介者模式(Mediator Pattern)

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之前的交互。

何时使用

优点

两个类直接关联,是很好实现的,但如果不希望两个类直接发生交互,那么就需要使用中介者模式了。

比如有两个类,他们都是做持久化的,一个负责将数据写入文件,一个负责将数据写入。他们谁先接收到数据是不确定的,但是要确保其中一个接收到数据后,另外一个也必须完成这些数据的持久化。如果我们直接将两个类关联在一起,互相调用是可以实现的,但不利于后期扩展或维护(比如再添加一个持久化组建,则原有的组建可能都需要修改),此时,若添加一个中介者,来协调他们,事儿就好办多了:

数据持久化的接口:

//同事(接口)public intece IPersistent {    void getData(Object data);    void getData(Object data,Midiator midiator);    void saveData();}

分别实现持久化到文件和持久化到的组件(具体同事):

//具体同事public class PersistentFile implements IPersistent{    private Object data;    @Override    public void getData(Object data, Midiator midiator) {        getData(data);        midiator.notifyOther(this, data);    }    @Override    public void saveData() {        System.out.println(data  " 已保存到文件");    }    @Override    public void getData(Object data) {        this.data = data;        saveData();    }}
//具体同事public class PersistentDB implements IPersistent{    private Object data;    @Override    public void getData(Object data, Midiator midiator) {        getData(data);        midiator.notifyOther(this, data);    }    @Override    public void saveData() {        System.out.println(data  " 已保存到");    }    @Override    public void getData(Object data) {        this.data = data;        saveData();    }}


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

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

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