什么是迭代器模式
所谓迭代器模式,就是提供一种方法顺序访问一个容器对象的各个元素,而又不需要暴露该对象的内部表示的设计模式。
迭代器模式的实现方式
在客户访问类与容器体之间插入一个第三者——迭代器,就可以在不暴露该对象的内部表示的同时解决容器类承担提供遍历方法功能造成功能冗余的问题。
《水浒传》中“梁山泊全伙受招安”的时候,宋江给梁上好汉造了天罡地煞两个花名册(容器)。先定义一个容器接口:
public interface Company { |
天罡容器:
public class SkyCompany implements Company { |
地煞容器:
public class LandCompany implements Company { |
天罡迭代器:
public class SkyIterator implements Iterator { |
地煞迭代器:
public class LandIterator implements Iterator { |
好汉类:
public class Bawcock { |
皇帝可以用迭代器检阅梁山好汉的花名册:
public static void check(Iterator iterator){ |
但是如果皇帝想要修改梁山好汉的职位的时候:“令宋江等分开军马,各归原所”,就会得到这个的答复:“俺等众头领,生死相随,誓不相舍!端的要如此,我们只得再回梁山泊去”。尽管道君皇帝宋徽宗碰了一鼻子灰,但我们明白了迭代器模式如何保证数据的安全。
Android源码中的迭代器模式
(1)List和Map
迭代器模式一般不会交给开发者实现,Java的常见数据结构List和Map等都自带迭代器。
(2)SQLiteDatabase
当我们使用SQLiteDatabase的query方法查询数据库时,会返回一个Cursor游标对象,这就是一个迭代器。
Android开发中如何利用迭代器模式
迭代器模式的优点很明显:支持以不同的方法去遍历一个容器对象,也可以有多个遍历,弱化了容器类与遍历算法之间的关系。在遍历一个容器对象时迭代器模式作用非常明显,比如自定义一个支持多选的图片选择器。
需要注意的几个问题
(1)迭代器模式在Java语言中具有相应的内置实现,极少数情况才需要开发者自己实现迭代器。
(2)迭代器模式增加类文件,造成代码臃肿。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。