首页 » 网站推广 » php迭代器图片技巧_设计模式之迭代器模式这样学So Easy

php迭代器图片技巧_设计模式之迭代器模式这样学So Easy

访客 2024-10-24 0

扫一扫用手机浏览

文章目录 [+]

迭代器模式,也叫游标模式,属于行为型设计模式。

迭代器模式类图

php迭代器图片技巧_设计模式之迭代器模式这样学So Easy

迭代器模式角色迭代器角色(Iterator): 定义按顺序逐个遍历元素的接口,紧张有hasNext和next两个方法。
详细迭代器角色(ConcreteIterator): 实现Iterator接口,实现对聚合工具的遍历,并记录当前游标的索引位置。
聚合角色(Aggregate):定义创建Iterator角色的接口,供应获取聚合工具的方法,还有添加元素、删除元素等方法。
详细聚合角色(ConcreteAggregate):实现Aggregate接口,它会创建出详细的Iterator角色,实现获取聚合工具的方法、添加元素、删除元素等方法。
迭代器模式优点支持以不同的办法遍历一个聚合工具。
简化了聚合的接口,通过迭代器来遍历聚合工具。
在同一个聚合上可以有多个遍历。
迭代器模式缺陷以繁芜的办法同时遍历两个不同的数据构造时,迭代器实际上可能会成为累赘。
增加新的聚合类就须要增加新的迭代器类,类的个数成对增加,一定程度上增加到了系统掩护的繁芜性。
对付比较大略的遍历,利用迭代器模式显得较为繁琐。
迭代器模式demo需求

利用迭代器模式定义一个迭代器,迭代器元素定义为泛型,存储元素的凑集利用List。
例如:利用书本类(书名及价格)作为迭代器元素,聚合类含有添加元素、删除元素方法,并返回迭代器工具。
末了利用迭代器对List凑集进行遍历。

php迭代器图片技巧_设计模式之迭代器模式这样学So Easy
(图片来自网络侵删)
迭代器模式源代码示例

/ 抽象迭代器角色:迭代器接口 /public interface Iterator<E> { / 是否有下一个元素 @return / boolean hasNext(); / 获取下一个元素 @return / E next(); / 获取第一个元素 @return / E first(); / 获取末了一个元素 @return / E last();}

/ @ClassName BookIterator @Description: 详细迭代器角色:数组迭代器 @Author ford @Date 2021/6/9 @Version V1.0 /public class MyIterator<E> implements Iterator<E> { // 存放工具的数组 private List<E> list; // 当前索引所在的下标位置 private int position = 0; / 初始化list凑集数据 @param list / public MyIterator(List<E> list) { this.list = list; } / 判断是否有下一个元素 @return / @Override public boolean hasNext() { return list.size() > position; } / 获取下一个元素工具 @return / @Override public E next() { E e = list.get(position); position++; return e; } / 获取第一个元素工具 @return / @Override public E first() { return list.get(0); } / 获取末了一个元素工具 @return / @Override public E last() { if (list.size() == 0) { return null; } return list.get(list.size() - 1); }}

/ 抽象聚合角色:聚合接口 /public interface Aggregate<E> { / 向凑集中添加一个元素 @param e / void add(E e); / 从凑集中删除一个元素 @param e / void remove(E e); / 返回一个迭代器工具 @return / Iterator<E> createMyIterator();}

/ @ClassName MyAggregate @Description: 详细聚合角色:实现聚合功能(添加元素、删除元素、返回迭代器工具等) @Author ford @Date 2021/6/11 @Version V1.0 /public class MyAggregate<E> implements Aggregate<E> { // 凑集工具 private List<E> list = new ArrayList<>(); / 添加元素 @param e / @Override public void add(E e) { list.add(e); } / 删除元素 @param e / @Override public void remove(E e) { list.remove(e); } / 返回一个迭代器工具 @return / @Override public Iterator<E> createMyIterator() { return new MyIterator<>(list); }}

/ @ClassName Book @Description: 书本类,充当元素工具 @Author ford @Date 2021/6/11 @Version V1.0 /public class Book { private String name; private Double price; public Book(String name, Double price) { this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", price=" + price + '}'; }}迭代器模式客户端测试

/ @ClassName Client @Description: 迭代器模式客户端测试类 @Author ford @Date 2021/6/11 @Version V1.0 /public class Client { public static void main(String[] args) { //构建聚合工具 Aggregate<Book> aggregate = new MyAggregate<>(); //添加书本工具 aggregate.add(new Book("打算机根本",80.00)); aggregate.add(new Book("java编程",60.00)); aggregate.add(new Book("python入门",50.00)); aggregate.add(new Book("PHP从入门到放弃",30.00)); //获取迭代器工具 Iterator<Book> iterator = aggregate.createMyIterator(); //打印第一本书 System.out.println("打印第一本书: "+iterator.first()); //打印末了一本书 System.out.println("打印末了一本书: "+iterator.last()); // 循环打印书本信息 while (iterator.hasNext()){ System.out.println(iterator.next()); } }}

打印第一本书: Book{name='打算机根本', price=80.0}打印末了一本书: Book{name='PHP从入门到放弃', price=30.0}Book{name='打算机根本', price=80.0}Book{name='java编程', price=60.0}Book{name='python入门', price=50.0}Book{name='PHP从入门到放弃', price=30.0}Process finished with exit code 0迭代器模式小结

本章分享了迭代器模式,紧张先容了迭代器模式的定义、类图、角色及优缺陷,并以书本作为迭代器元素需求为例进行代码实现。

若本文使你受益,还请给予关注、点赞、转发,欢迎拍砖!


标签:

相关文章

探秘北京丰台区历史与现代交织的文化胜地

丰台区,位于北京市南部,东邻朝阳区,西靠门头沟区,南与河北省交界,北与石景山区相邻。作为北京市重要的历史文化名城之一,丰台区不仅承...

网站推广 2025-02-18 阅读0 评论0

富士伺服器报警代码OF故障原因及应对步骤

伺服电机在工业生产中的应用越来越广泛。富士伺服器作为伺服电机的重要组成部分,其性能直接影响着整个系统的稳定性。在实际应用过程中,富...

网站推广 2025-02-18 阅读0 评论0

安卓手机电池技术发展之路电池续航的奥秘

智能手机已经成为我们生活中不可或缺的一部分。手机续航问题一直困扰着广大用户。作为安卓手机的核心部件,电池技术的发展显得尤为重要。本...

网站推广 2025-02-18 阅读0 评论0