Java设计模式之Iterator模式
参考:马士兵 Java设计模式 Iterator
1.首先定义一个容器Collection接口.
- package com.njupt.zhb.learn.iterator;
- public interface Collection {
- void add(Object o);
- int size();
- Iterator iterator();
- }
2.定义一个Iterator迭代器的接口
- package com.njupt.zhb.learn.iterator;
- public interface Iterator {
- Object next();
- boolean hasNext();
- }
3.定义一个ArrayList,实现Collection接口,并写一个实现了Iterator接口的内部类。
- package com.njupt.zhb.learn.iterator;
- import com.njupt.zhb.learn.iterator.Collection;
- public class ArrayList implements Collection {
- Object[] objects = new Object[10];
- int index = 0;
- public void add(Object o) {
- if(index == objects.length) {
- Object[] newObjects = new Object[objects.length * 2];
- System.arraycopy(objects, 0, newObjects, 0, objects.length);
- objects = newObjects;
- }
- objects[index] = o;
- index ++;
- }
- public int size() {
- return index;
- }
- public Iterator iterator() {
- return new ArrayListIterator();
- }
- private class ArrayListIterator implements Iterator {
- private int currentIndex = 0;
- @Override
- public boolean hasNext() {
- if(currentIndex >= index) return false;
- else return true;
- }
- @Override
- public Object next() {
- Object o = objects[currentIndex];
- currentIndex ++;
- return o;
- }
- }
- }
4.编写测试程序TestMain
- package com.njupt.zhb.learn.iterator;
- import com.njupt.zhb.learn.iterator.ArrayList;
- public class TestMain {
- public static void main(String[] args) {
- Collection c = new ArrayList();
- for(int i=0; i<15; i++) {
- c.add("string "+i);
- }
- System.out.println(c.size());
- Iterator it = c.iterator();
- while(it.hasNext()) {
- Object o = it.next();
- System.out.println(o.toString() + " ");
- }
- }
- }
运行结果:
- 15
- string 0
- string 1
- string 2
- string 3
- string 4
- string 5
- string 6
- string 7
- string 8
- string 9
- string 10
- string 11
- string 12
- string 13
- string 14
从以上可以看出,设计模式到处用到面向对象中的多态。接口调用子类中的函数。源代码下载:
http://download.csdn.net/detail/nuptboyzhb/5755295
Java设计模式之Iterator模式的更多相关文章
- Java设计模式——装饰者模式
JAVA 设计模式 装饰者模式 用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- JAVA设计模式--装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...
- 折腾Java设计模式之建造者模式
博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...
- 折腾Java设计模式之备忘录模式
原文地址:折腾Java设计模式之备忘录模式 备忘录模式 Without violating encapsulation, capture and externalize an object's int ...
- 折腾Java设计模式之状态模式
原文地址 折腾Java设计模式之状态模式 状态模式 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.这种类型的设计模式属于行为型模式.在状态模式中,我们创建表示各种状态的对象 ...
- 折腾Java设计模式之模板方法模式
博客原文地址:折腾Java设计模式之模板方法模式 模板方法模式 Define the skeleton of an algorithm in an operation, deferring some ...
- 折腾Java设计模式之访问者模式
博客原文地址:折腾Java设计模式之访问者模式 访问者模式 Represent an operation to be performed on the elements of an object st ...
- 折腾Java设计模式之命令模式
博客原文地址 折腾Java设计模式之命令模式 命令模式 wiki上的描述 Encapsulate a request as an object, thereby allowing for the pa ...
随机推荐
- eclipse修改工作空间编码格式
一.修改workspace默认编码 eclipse打开window -> 打开preferences 二.修改jsp默认编码 eclipse打开window -> 打开preference ...
- ISE主备注册和同步
Synchronize Primary and Secondary Cisco ISE Nodes You can make configuration changes to Cisco ISE on ...
- Embedded Packet Capture (EPC)
Embedded Packet Capture (EPC)是一个很好的抓包工具,在排障的时候,需要在线抓包的情况下,是一个非常好的选择. EPC在IOS和IOS-XE都是支持,不过,不同平台下有版本的 ...
- Android基础 -- Activity之间传递数据(bitmap和map对象)
原文:http://blog.csdn.net/xueerfei008/article/details/23046341 做项目的时候需要用到在2个activity之间传递一些数据,之前做的都是些字符 ...
- Android的界面组件使用之ImageButton和ImageView,ImageSwitcher和GridView
(一)ImageButton和ImageView ImageButton与Button的功能完全相同,只是ImageButton上显示的是图像,并且每个ImageButton组件都必须指定一个id,以 ...
- CSS - 背景半透明
就一句话 background: rgba(0, 0, 0, .2); body { background-color: pink; } div { width: 200px; height: 200 ...
- word2vec 构建中文词向量
词向量作为文本的基本结构——词的模型,以其优越的性能,受到自然语言处理领域研究人员的青睐.良好的词向量可以达到语义相近的词在词向量空间里聚集在一起,这对后续的文本分类,文本聚类等等操作提供了便利,本文 ...
- MySQL之约束
目录 约束(CONSTRAINT) mysql中的约束有哪些? 级联操作 产生的原因: 两种级联的定义方式 约束(CONSTRAINT) 什么是约束? 是一种限制,对某一个东西的限制.例如宪法规定 ...
- 牛茶冲天的ip命令
一.修改二层链路相关设置 1.修改网卡名称(修改前要先停止) ip link set eth0 name testname 2.修改网卡地址 ip link set eth0 address xxx ...
- Eclipse开发快捷键
ctrl+alt+r:查找资源 ctrl+o:快速outLine ctrl+e:快速切换编辑器 ctrl+./ctrl+1:下一个错误修改