打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
4. 迭代器模式
一. 概念
迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。

二. 实现
视屏是一如既往的简单,一个小时的视屏讲了两三个模式,所以我又把那两本书相关内容看了一遍。
了解过后发现Iterator模式虽然很重要,但是已经不大用了,因为无论C#还是Java已经把它封装的很好了,所以我这里就只实现了很简单的功能。
也就是用Iterator模式实现集合的遍历。
Test.java
public class Test {
public static void main(String[] args) {
CollectionDemo collection = new ArrayListCollection();
for(int i=0; i<10; i++){
collection.add(i);
}
System.out.println(collection.size());
IteratorDemo iterator = collection.getIterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
依然从测试类开始,这里新建了一个集合,在插入十个值后获取它的长度并遍历。

CollectionDemo.java
public interface CollectionDemo {
public void add(Object obj);
public void remove(Object obj);
public IteratorDemo getIterator();
public int size();
}
这个类是集合类的接口。

ArrayListCollection.java
public class ArrayListCollection implements CollectionDemo {
private Object[] objects = new Object[15];
int index = 0;
@Override
public void add(Object obj) {
objects[index] = obj;
index++;
}

@Override
public void remove(Object obj) {
for(int i=0; i< objects.length; i++){
if(objects.equals(obj)){
objects[i] = null;
}
}
}
@Override
public int size() {
return index;
}

@Override
public IteratorDemo getIterator() {
return new ArrayIterator();
}
private class ArrayIterator implements IteratorDemo{
int i=-1;
@Override
public boolean hasNext() {
if(objects[i+1] != null){
i++;
return true;
}
return false;
}

@Override
public Object next() {
Object result = objects[i];
return result;
}
}

}
这个类实现了接口,里面有一个内部类,那个内部类就是迭代类。

IteratorDemo.java
public interface IteratorDemo {
public boolean hasNext();
public Object next();
}
这个类是迭代类的接口。

三. 总结
由于这个模式并不十分重要,也不是十分难,所以没什么好总结的。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
大话设计模式笔记(十七)の迭代器模式
简说设计模式——迭代器模式
设计模式--迭代器模式(Iterator)
迭代器模式(Iterator)
《JAVA与模式》之迭代子模式
23种设计模式详解(四)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服