设计模式-11 迭代器模式
来源:互联网 发布:1080a最新x站免费域名 编辑:程序博客网 时间:2024/06/06 07:51
看了迭代器模式以后,我还是没有明白为什么要用这种模式。LinkedList和ArrayList的迭代器都是以内部类的形式。为什么要把这个迭代器单独拿出来?
类图
简单实现
要遍历英雄联盟里边的人物,一种方式是直接for循环遍历。另一种就是使用迭代器。当然也可以List自带的迭代器去遍历。这里我为了演示迭代器模式。所以用爹地器方式去实现。
容器内的元素
/** * 英雄 */public class Hero { /** * 英雄名字 */ private String name; /** * 英雄大招 */ private String Big; public Hero(String name, String big) { Big = big; this.name = name; } @Override public String toString() { return "Hero [name=" + name + ", Big=" + Big + "]"; }}
迭代器
public interface Iiterator { /** * 是否有下个元素 */ boolean hasNext(); /** * 返回当前位置的元素 将下标值移至下一位 */ Object next();}
具体迭代器
/** * 英雄迭代器 * */public class HeroIterator implements Iiterator { private List<Hero> list; private int index; public HeroIterator(List<Hero> list) { this.list = list; } public boolean hasNext() { return index <= list.size() - 1 && list.get(index) != null; } public Object next() { Hero hero = list.get(index); index++; return hero; }}
容器
/** * 召唤师峡谷 */public interface IsummonersRefit { /** * 返回一个迭代器对象 */ Iiterator iterator();}
容器实现
/** * 召唤师峡谷 */public class SummonerRefit implements IsummonersRefit { private List<Hero> list; public SummonerRefit(){ initAllHeros(); } private void initAllHeros() { list = new ArrayList<>(); list.add(new Hero("卡特","死亡莲花")); list.add(new Hero("盖伦","德玛西亚正义")); list.add(new Hero("小鱼人","大鲨鱼")); list.add(new Hero("安妮","大狗熊")); list.add(new Hero("皇子","大锅扣")); } public Iiterator iterator() { return new HeroIterator(list); }}
Client
/** * 玩家想看看有哪些英雄 * @author YeLiang * */public class Player { public static void main(String[] args) { SummonerRefit summonerRefit = new SummonerRefit(); getAllhero(summonerRefit.iterator()); } private static void getAllhero(Iiterator iterator){ while(iterator.hasNext()){ System.out.println(iterator.next().toString()); } }}
迭代器模式中,迭代器遍历容器时的核心思想就是每次根据容器下标获取相应的值。并让下边index++.然后下一次获取就是下一个元素。
0 0
- 设计模式-11 迭代器模式
- 设计模式-迭代器模式
- 设计模式 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 【设计模式】迭代器模式
- 设计模式-迭代器模式
- 设计模式- 迭代器模式
- 设计模式 - 迭代器模式
- 设计模式:迭代器模式
- 设计模式 - 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 设计模式---迭代器模式
- 设计模式---迭代器模式
- 【设计模式】迭代器模式
- 设计模式 迭代器模式
- 设计模式--迭代器模式
- 虚函数与虚继承
- Git 常用命令总结
- UIKit和Core Graphics绘图——字符串,线条,矩形,渐变
- iOS最好用的引导页
- android-支持多种屏幕[设计替代布局和可绘制对象] 六
- 设计模式-11 迭代器模式
- java(六)字符串与equals
- 百度面经(实习)
- 微信端发消息时而成功时而失败并提示:该公众账号暂时无法提供服务,请稍后再试
- ACTION_CALL和ACTION_DIAL的区别
- python BM
- 17-hive表格式
- Eclipse插件svn和TortoiseSvn版本对应关系
- input 实时监控值得变化