设计模式之迭代器模式java实现代码
来源:互联网 发布:数据库管理系统的发展 编辑:程序博客网 时间:2024/05/17 08:59
转载请注明出处:http://blog.csdn.net/droyon/article/details/8816722
迭代器模式:提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
迭代器模式提供了一种方法,可以顺序访问一个聚合对象中的元素,而又不用知道内部是如何标示的。另外,迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象,让聚合更专注于数据集合。
案例实现情景:我和友人去超市分头购物,在结帐时,我们遍历一下我们的 “扫货” 清单(遍历打印购物清单),在实现上,Me使用ArrayList,友人使用Thing[]数组,给遍历造成困扰。
案例代码:
Thing.java
public class Thing {private String name;private long price;public Thing(String name,long price){this.name = name;this.price = price;}@Overridepublic String toString() {return "Thing [name=" + name + ", price=" + price + "]";}}
Me.java
import java.util.ArrayList;import java.util.Iterator;public class Me {private ArrayList<Thing> shopping = new ArrayList<Thing>();public Me(){shopping.add(new Thing("巧克力", 35));shopping.add(new Thing("凉茶", 4));shopping.add(new Thing("袜子", 9));shopping.add(new Thing("香蕉", 12));}public Iterator<Thing> createIterator(){return shopping.iterator();}}Friends.java
import java.util.Iterator;public class Friends {private Thing[] shopping = new Thing[100];public Friends(){shopping[0] = new Thing("牛奶",15);shopping[1] = new Thing("苹果",10);shopping[2] = new Thing("薯片",4);}public Iterator<Thing> createIterator(){return new ArrayIterator(shopping);}}
ArrayIterator.java
import java.util.Iterator;public class ArrayIterator implements Iterator<Thing>{private Thing[] thingArray;private int position = 0;public ArrayIterator(Thing[] array){thingArray = array;}@Overridepublic boolean hasNext() {while(position<thingArray.length && thingArray[position] != null){return true;}return false;}@Overridepublic Thing next() {return thingArray[position++];}@Overridepublic void remove() {//noting to do }}
Test.java
import java.security.AllPermission;import java.util.ArrayList;import java.util.Iterator;public class Test {public static void main(String args[]){ArrayList<Iterator<Thing>> allIterator = new ArrayList<Iterator<Thing>>();Me me = new Me();Friends friends = new Friends();Iterator<Thing> meIterator = me.createIterator();Iterator<Thing> friendsIterator = friends.createIterator();allIterator.add(meIterator);allIterator.add(friendsIterator);for(Iterator<Thing> iterator:allIterator){while(iterator.hasNext()){System.out.println(iterator.next());}System.out.println("---------------------");}}}
测试结果:
Thing [name=巧克力, price=35]Thing [name=凉茶, price=4]Thing [name=袜子, price=9]Thing [name=香蕉, price=12]---------------------Thing [name=牛奶, price=15]Thing [name=苹果, price=10]Thing [name=薯片, price=4]---------------------
总结:
设计原则:
单一职责:一个类应该只有一个引起变化的职责。
当一个模块或一个类被设计成只支持一组相关的功能时,我们说它具有高内聚。
- 设计模式之迭代器模式java实现代码
- Java设计模式之代码实现
- 设计模式之动态代理的代码实现(Java)
- 设计模式之组合模式java实现
- 设计模式之适配器模式Java实现
- Java实现设计模式之工厂模式
- Java实现设计模式之外观模式
- Java实现设计模式之策略模式
- Java实现设计模式之观察者模式
- Java实现设计模式之适配器模式
- 设计模式之装饰模式Java实现
- 《大话设计模式》java实现之迭代器模式
- 设计模式之迭代器模式(代码)
- C++之设计模式实现代码
- C++之设计模式实现代码
- 设计模式之桥接模式+适配器模式Java实现
- 模板设计模式,简单Java代码实现
- scala实现设计模式之迭代器模式
- JavaScript事件冒泡简介及应用
- experiment : 字符串分解 on drv
- struct类型的赋值
- Hadooop sites
- Wax框架简明教程(1) 简介
- 设计模式之迭代器模式java实现代码
- Windows 下安装并配置 SVN 服务器全过程
- java基本概念(二)
- 提炼数据 数据处理
- 如何规范.net中的js开发(1)概念篇(更新版)
- WebService 实例应用
- mysql数据库性能的十个参数(转)
- [125]Valid Palindrome
- Find the nondecreasing subsequences HDU 2227