1. java的iterator

public class ArrayIteratorImpl implements Iterator{//用来存放被迭代的数组 private PayModel[] pms = null;//用来记录当前迭代到的位置索引 private int index = 0; public ArrayIteratorImpl(SalaryManager aggregate){ Collection<PayModel> tempCol = new ArrayList<PayModel>();for(PayModel pm : aggregate.getPays()){if(pm.getPay() < 3000){tempCol.add(pm);}}//然后把符合要求的数据存放到用来迭代的数组this.pms = new PayModel[tempCol.size()];int i=0;for(PayModel pm : tempCol){this.pms[i] = pm;i++;}}public class PayManager extends Aggregate{private List<PayModel> list = new ArrayList<PayModel>();//获取工资列表 public List<PayModel> getPayList(){return list;}//计算工资 public void calcPay(){ PayModel pm1 = new PayModel();pm1.setPay(3800);pm1.setUserName("张三");  list.add(pm1); }public Iterator createIterator() {return list.iterator();}
}

2. 双向迭代

public class ArrayIteratorImpl implements Iterator{public void previous(){if(index > 0 ){index = index - 1;}}

3. 数据翻页

public class ArrayIteratorImpl implements AggregationIterator{public Collection next(int num) {Collection col = new ArrayList();int count=0;while(hasNext() && count<num){col.add(pms[index]);//每取走一个值,就把已访问索引加1index++;count++;}return col;}   public Collection previous(int num){Collection col = new ArrayList();int count=0;//简单的实现就是把索引退回去num个,然后再取值。//但事实上这种实现是有可能多退回去数据的,比如:已经到了最后一页,//而且最后一页的数据不够一页的数据,那么退回去num个索引就退多了 index = index - num;while(hasPrevious() && count<num){col.add(pms[index]);index ++;count++;}return col;}

《研磨设计模式》chap14 迭代器模式(3) 举例相关推荐

  1. 每日学一个设计模式1——迭代器模式

    引言 精通设计模式是从码农脱颖而出的条件之一.跟着<图解设计模式>这本书学习设计模式,从今天开始,一天总结一个设计模式. 迭代器模式(一个一个遍历) 用处 隐藏遍历集合的内部结构,遍历不同 ...

  2. 研磨设计模式之 策略模式--转

    http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式   2010-09-09 作者:云飞龙行 来源:云飞龙行的blog   先感谢众多朋友的支持 ...

  3. 【GOF23设计模式】迭代器模式

    [GOF23设计模式]迭代器模式 来源:http://www.bjsxt.com/  一.[GOF23设计模式]_迭代器模式.JDK内置迭代器.内部类迭代器 1 package com.test.it ...

  4. [转载] Python进阶:设计模式之迭代器模式

    参考链接: Python中的迭代器 在软件开发领域中,人们经常会用到这一个概念--"设计模式"(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一 ...

  5. php迭代器实例,php设计模式之迭代器模式实例分析【星际争霸游戏案例】

    本文实例讲述了php设计模式之迭代器模式.分享给大家供大家参考,具体如下: 星际的任务关一般会有这样的设定:一开始电脑的农民不采矿,如果战斗打响,或者玩家造出第一个兵,电脑的农民开始采矿. 我们自然会 ...

  6. 研磨设计模式之外观模式(Facade)(解决方案)

    3.2  解决方案 3.2.1  外观模式来解决 用来解决上述问题的一个合理的解决方案就是外观模式.那么什么是外观模式呢? (1)外观模式定义 这里先对两个词进行一下说明,一个是界面,一个是接口. 界 ...

  7. 研磨设计模式 之 组合模式(Composite) 3——跟着cc学设计系列

    15.3  模式讲解 15.3.1  认识组合模式 (1)组合模式的目的 组合模式的目的是:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作. 实现这个目标的关键之处,是设计一 ...

  8. 设计模式之迭代器模式(Iterator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  9. 设计模式复习-迭代器模式

    Iterator.H #pragma once #include <list> #include <windows.h> using namespace std;/* 设计模式 ...

最新文章

  1. 企业官网营销,网站建设是第一步
  2. MikuMikuShaders
  3. 期末考试前的预习,科目:化工设备与反应器(2)
  4. HDFS的Block size的默认大小
  5. 微信小程序 --- 音乐的播放和控制
  6. 初级软件水平测试题,2020初级会计题库软件机考系统练习试卷
  7. java Ofd 转图片_OFD文件怎么转换成图片
  8. Windows11在Edge浏览器中打开IE浏览器兼容的页面,在Edge浏览器打开加载ActiveX控件的页面
  9. Python函数combination
  10. 苹果笔记本什么系统_怎么把苹果笔记本系统改为win7系统?
  11. 如何将PDF文档进行翻译?PDF文档翻译简单方法介绍
  12. 如何制作一个U盘启动盘和重装window系统
  13. 使用 代码 读取 build.gradle 中的自定义配置信息
  14. 一周 Go World 新鲜事-2019W11
  15. php where 时间条件,thinkphp5日期时间查询比较和whereTime使用方法
  16. 《 ThinkSNS 社区服务接口文档.md 》
  17. 三星Note 7停产,原来是吃了流程的亏
  18. 用HBuilder打包iOS App
  19. Linux离线安装yarn和配置离线仓库
  20. 写一个简单的自动取款机c语言程序,C语言编程模仿银行ATM自动取款机功能

热门文章

  1. 蓝桥杯比赛常考算法_备战蓝桥--算法竞赛入门第一章总结
  2. 汤加近海处电缆或已断裂 修复需两周以上!淡水成最紧俏资源!
  3. 超级计算数据中心设计要求(征求意见稿)
  4. ML:MLOps系列讲解之《MLOps原则之监控/“机器学习成绩”系统/可再现性/松散耦合架构(模块化)/基于ML的软件交付指标/MLOps原则和实践的总结》解读
  5. DataScience:深入探讨与分析机器学习中的数据处理之非线性变换—log对数变换、sigmoid/softmax变换
  6. CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
  7. 成功解决Redirection is not supported
  8. Py之MT:Multithreaded的简介、引入、使用方法之详细攻略
  9. Java:希望每天叫醒你的不是闹钟而是梦想!
  10. 朴素贝叶斯法分类器的Python3 实现