网站一键备份,河北青山建设集团有限公司网站,家居公司网站建设方案ppt,宣传推广文案类型#xff1a;行为型模式
实现原理#xff1a;提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
作用#xff1a;用于顺序访问集合对象的元素#xff0c;不需要知道集合对象的底层表示
解决的问题#xff1a;不同的方式遍历整个整合对象…类型行为型模式
实现原理提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
作用用于顺序访问集合对象的元素不需要知道集合对象的底层表示
解决的问题不同的方式遍历整个整合对象的问题
何时使用遍历一个聚合对象。
解决的方法让迭代器访问元素而不是聚合对象。
实现核心定义接口hasNext, next。
应用实例文件系统遍历
优点 1、支持以不同的方式遍历一个聚合对象。 2、简化聚合类。 3、在同一个聚合上可以有多个遍历。 4、增加新的聚合类和迭代器类方便
缺点增加新的聚合类需要对应增加新的迭代器类类的个数成对增加系统的复杂性随之增加。
使用场景1、需要不暴露内部信息地访问聚合对象的内容 2、需要为聚合对象提供多种遍历方式。 3、为遍历不同的聚合结构提供一个统一的接口。
实现
步骤 1
创建接口:Iterator.java
public interface Iterator {public boolean hasNext();public Object next();
}
Container.java
public interface Container {public Iterator getIterator();
}
步骤 2
创建实现了 Container 接口的实体类。该类有实现了 Iterator 接口的内部类 NameIterator。NameRepository.java
public class NameRepository implements Container {public String[] names {Robert , John ,Julie , Lora};Overridepublic Iterator getIterator() {return new NameIterator();}private class NameIterator implements Iterator {int index;Overridepublic boolean hasNext() {if(index names.length){return true;}return false;}Overridepublic Object next() {if(this.hasNext()){return names[index];}return null;} }
}
步骤 3
使用 NameRepository 来获取迭代器并打印名字。IteratorPatternDemo.java
public class IteratorPatternDemo {public static void main(String[] args) {NameRepository namesRepository new NameRepository();for(Iterator iter namesRepository.getIterator(); iter.hasNext();){String name (String)iter.next();System.out.println(Name : name);} }
}
步骤 4
执行程序输出结果Name : Robert
Name : John
Name : Julie
Name : Lora
这段代码是一个简单的迭代器模式的示例。以下是对代码的解释步骤1定义接口Iterator 接口定义了迭代器的基本方法包括 hasNext() 方法用于检查是否有下一个元素以及 next() 方法用于获取下一个元素。Container 接口定义了获取迭代器的方法 getIterator()。步骤2创建实体类NameRepository 是实现了 Container 接口的具体类。
NameRepository 内部定义了一个私有的内部类 NameIterator它实现了 Iterator 接口用于遍历 names 数组中的元素。
NameIterator 类中的 index 变量用于追踪当前迭代的位置。
hasNext() 方法检查是否还有下一个元素如果 index 小于 names 数组的长度则返回 true。
next() 方法返回当前位置的元素并将 index 递增。
步骤3使用迭代器在 IteratorPatternDemo 类的主方法中首先创建一个 NameRepository 对象 namesRepository。
然后通过调用 namesRepository 的 getIterator() 方法获取一个迭代器对象 iter。
最后使用 iter 迭代器进行循环遍历通过调用 hasNext() 方法检查是否有下一个元素然后调用 next() 方法获取下一个元素。
将获取的元素打印出来。
步骤4输出结果执行程序后将依次输出数组 names 中的每个元素。
这段代码演示了如何使用迭代器模式来遍历和获取集合中的元素它提供了一种统一的方式来访问不同种类的集合或数据结构。