迭代器模式(java版)
迭代器模式的组成部分
Aggregate(抽象聚合类)
它用于存储和管理元素对象,声明一个createiterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。
ConcreteAggregate(具体聚合类)
它用于抽象聚合类的子类,实现了在抽象集合类中的声明的createIterator()方法,该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例。
Iterator
它定义了访问和遍历元素的接口,声明了用户遍历数据元素的方法。
first()://用于获取第一个元素
next();//用于访问下一个元素
hasnext();//用于判断是否还有下一个元素
currentitem();//用于获取当前元素
ConcreteIterator
它实现了抽象迭代器接口,完成了对聚合对象的遍历,同时在具体迭代器中通过游标访问来标记在聚合对象中所处的当前位置,在具体实现时,游标通常是一个表示位置的非负整数。
代码如下:
package com.china.wanson; public interface Iterator {
public boolean hasNext();
public Object next(); }
package com.china.wanson; public interface List {
public void add(Object object);
public Object get(int index);
public Iterator interator();
public int getSize(); }
package com.china.wanson; public class ConcreteAggregate implements List{ private Object[] list;
private int size=0;
private int index=0; public void add(Object object) {
list[index++]=object;
size++;
} public Object get(int index) { return list[index];
} public Iterator interator() { return new ConcreteIterator(this);
} public int getSize() {
return size;
}
}
package com.china.wanson; public class ConcreteIterator implements Iterator {
private List list=null;
private int index; public ConcreteIterator(List list){
super();
this.list=list;
} public boolean hasNext() {
if(index>=list.getSize()){
return false;
}else{
return true;
}
} public Object next() {
Object object=list.get(index++);
return object;
}
}
迭代器模式(java版)的更多相关文章
- 设计模式之第6章-迭代器模式(Java实现)
设计模式之第6章-迭代器模式(Java实现) “我已经过时了,就不要讲了吧,现在java自带有迭代器,还有什么好讲的呢?”“虽然已经有了,但是具体细节呢?知道实现机理岂不美哉?”“好吧好吧.”(迭代器 ...
- 设计模式之迭代器模式——Java语言描述
迭代器模式是Java和.NET编程环境中非常常用的设计模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示 介绍 意图 提供一种方法顺序访问一个聚合对象中各个元素,无需暴露该对象的内 ...
- IteratorPattern(迭代器模式)-----Java/.Net
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示
- Java源代码-迭代器模式
Java无疑是最成功的项目之一了,而在其中学习设计模式和架构设计,无疑是最好不过了. 概念: 提供一种方法访问容器中的各个元素,而又不暴露该对象的内部细节. 使用场景: 和容器经常在一起,我们定义了一 ...
- JAVA 设计模式 迭代器模式
用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...
- Java设计模式系列之迭代器模式
迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 迭代器模式的角色构成 (1)迭代器角色(Iterator):定义遍历元素所需 ...
- Java设计模式(八)观察者模式 迭代器模式
(十五)观察者模式 观察者模式,定义对象间一对多关系,一个对象状态发生改变,全部依赖于它的对象都收到通知而且自己主动更新,观察者与被观察者分开.比如邮件订阅.RSS订阅,假设有更新就会邮件通知你. i ...
- java 之 迭代器模式(大话设计模式)
众所周知,java是编程语言中的高级语言,在java的世界里,已经有前辈为我们封装好了各个很好用的框架,工具类等,今天笔者想说的迭代器模式也已经被封装过. 就是我们经常使用的for循环迭代器.或者It ...
随机推荐
- python面向对象:类方法
类的方法包括以下几种: 构造方法 :__init__(self,) 析构方法 :__del__(self) 类方法@classmethod.实例方法.静态方法@staticmethod 一.构造方法 ...
- python-----多线程、线程池、进程池
import threadingimport time ###############################多线程################################------ ...
- English class 82 The Importance of traveling
1,since I could basically walk : pretty much 2,Malaysian girl 3,profound love: deep very inportant 4 ...
- day 0314函数的进阶
1.空间:内置空间,全局空间,局部空间. 内置空间:空间存放python解释器,为我们提供了方便的名字:input,print,str,list,tuple 三个空间的加载顺序: 内置空间>&g ...
- 关于字符串的简单dp
看这道题题目叫做魔族密码多新奇的名字点开是道字符串的dp,思考然后想出lis其实但字符串之间的比对只有循环然后其实循环爆不了,太懒点开了题解发现有人使用stl——cstring的函数了方便多了,借鉴一 ...
- day5_判断价格输入是否是正整数或正小数
def check_float_integer(s): #判断价格正确的正整数或正小数 s = str(s) if check_integer(s) == True: return True elif ...
- WIN7环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法
一.进入安全模式 1.通过Ctrl+R打开运行窗口,输入Msconfig 2.如上图,选择安全引导,点击确定.重启计算机进入安全模式. 二.在安全模式下,设置环境变量 1.C:\Windows\Sys ...
- 防止atoi函数内存越界
函数形式为: int atoi(const char *nptr); 函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非 ...
- membership DB生成 & dll 强命名 & 证书生成
UPD(Membership)数据库安装1.使用 Aspnet_regsql.exe 安装数据库 在 C:\WINDOWS\Microsoft.NET\Framework\\aspnet_regsql ...
- jquery实现简单的弹出框
弹出框本身是一个div,默认是隐藏不展示的,在需要弹框的时候使其显示,并浮在当前页面之上 弹框样式: .tanchuang { width: 100%; height: 100%; display: ...