输出:
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
等中国有这能力了
嚇哭本寶寶了