当前位置: 首页 > news >正文

网站首页分类怎么做的淮安做网站卓越凯欣

网站首页分类怎么做的,淮安做网站卓越凯欣,洛阳网红,百度如何搜索到自己的网站什么是迭代器模式 迭代器模式(Iterator Pattern)属于行为型模式,其提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示,即不需要知道集合对象的底层表示。编程环境中非常常用的设计模式。 迭代…

什么是迭代器模式

        迭代器模式(Iterator Pattern)属于行为型模式,其提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示,即不需要知道集合对象的底层表示。编程环境中非常常用的设计模式。

迭代器模式的实现

迭代器模式角色

  1. 抽象迭代器角色(Iterator):定义遍历元素所需要的方法,通常包含next()、hasNext()、remove()等。
  2. 具体迭代器角色(Concrete Iterator):实现迭代器接口中定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。
  3. 容器角色(Aggregate):一般是接口,定义存储、添加、删除聚合元素以及创建迭代器对象的接口。
  4. 具体容器角色(ConcreteAggregate):抽象容器的具体实现类,实现抽象容器,创建出容器迭代器的对象。

迭代器模式类图

迭代器模式代码实现

抽象迭代器角色

package com.common.demo.pattern.iterator;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 抽象迭代器角色 抽象迭代器* @date 2023/08/03 22:38:43*/
public interface Iterator {//判断是否还有下一个元素boolean hasNext();//获取第一个元素Object first();//获取下一个元素Object next();
}

具体迭代器角色

package com.common.demo.pattern.iterator;import java.util.List;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 具体迭代器角色 对象迭代器* @date 2023/08/03 22:39:30*/
public class ObjectIterator implements Iterator{private List<Object> list;//记录遍历时的位置private int position = 0;public ObjectIterator(List<Object> list) {this.list = list;}@Overridepublic boolean hasNext() {return position<list.size();}@Overridepublic Object first() {return list.get(0);}@Overridepublic Object next() {return list.get(position++);}
}

抽象容器角色

package com.common.demo.pattern.iterator;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 抽象聚合/容器角色* @date 2023/08/03 22:43:07*/
public interface Aggregate {//添加对象void addObject(Object object);//移除对象void removeObject(Object object);//获取迭代器Iterator getIterator();
}

具体容器角色

package com.common.demo.pattern.iterator;import java.util.ArrayList;
import java.util.List;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 具体聚合/容器角色 对象聚合* @date 2023/08/03 22:43:31*/
public class ObjectAggregate implements Aggregate{private List<Object> list = new ArrayList<>();@Overridepublic void addObject(Object object) {list.add(object);}@Overridepublic void removeObject(Object object) {list.remove(object);}@Overridepublic Iterator getIterator() {return new ObjectIterator(list);}
}

测试类

package com.common.demo.pattern.iterator;/*** @author Evan Walker 昂焱数据: https://www.ayshuju.com* @version 1.0* @desc 测试类* @date 2023/08/03 22:44:47*/
public class Test {public static void main(String[] args) {//创建聚合对象ObjectAggregate objectAggregate = new ObjectAggregate();//在聚合对象中填充数据objectAggregate.addObject("我是好人一号");objectAggregate.addObject("我是好人二号");objectAggregate.addObject("我是好人三号");//获取迭代器Iterator iterator = objectAggregate.getIterator();//通过迭代器迭代数据while (iterator.hasNext()){System.out.println(iterator.next());}}
}

测试截图

迭代器模式的特点

优点

  1. 简化集合遍历代码:迭代器模式可以封装集合对象的遍历过程,使得客户端代码更简洁清晰,无需关心集合对象的内部表示和遍历方式。
  2. 支持多种遍历方式:通过定义不同的迭代器类,可以实现对同一个聚合对象的不同遍历方式,灵活地应对不同的需求。
  3. 封装聚合对象的内部表示:迭代器将遍历操作从聚合对象中抽离出来,使得聚合对象可以更好地封装自己的内部数据结构。

缺点

  1. 增加了系统复杂性:引入迭代器模式将会增加额外的类和接口,增加了系统的复杂性和理解难度。
  2. 需要额外的内存开销:每个迭代器对象都需要占用一定的内存空间,当迭代器数量较多时,会增加系统的内存开销。

使用场景

  1. 需要遍历聚合对象的情况:当需要遍历访问一个聚合对象的元素,并且对外部隐藏其内部表示时,可以考虑使用迭代器模式。
  2. 需要支持多种遍历方式的情况:当同一聚合对象需要支持多种不同的遍历方式时,可以使用迭代器模式来实现。

注意事项

  1. 迭代器模式一般包括迭代器接口和具体迭代器实现类,以及聚合对象和具体聚合对象类。在使用迭代器模式时,需要注意它们之间的关系和协作。
  2. 聚合对象需要提供创建迭代器对象的接口,以便客户端能够获取迭代器对象进行遍历操作。
  3. 注意迭代器对象的生命周期管理,特别是在多线程环境下,需要注意迭代器的线程安全性和一致性。
  4. 考虑迭代器模式的性能影响,尤其是对于大规模数据集合的遍历操作,需要合理评估迭代器模式的适用性和性能开销。

更多消息资讯,请访问昂焱数据(https://www.ayshuju.com)

http://www.yayakq.cn/news/46001/

相关文章:

  • 网站建设运维怎么将微信同步到wordpress
  • 个人网站备案描述app创意设计方案
  • 如何在图片上添加文字做网站律师事务所网站制作方案
  • ppt效果网站网络工程设计项目方案设计
  • 常州语言网站建设中企动力天津科技有限公司
  • 广州海外建站昆明企业建网站多少钱
  • 哪家公司网站建设好金宝贝早教中心网页界面设计
  • 大良网站设计价位实业有限公司网站怎么做
  • 常州网站制作系统响应式网站模板xd
  • 设计学习网站试用网站如何做
  • 网站界面风格设计描述电商数据分析平台
  • 旧安卓手机做网站专注高密网站建设
  • 网站 百度地图淘宝客怎么建立网站
  • 域名注册后怎么做网站网站开发开题报告格式
  • 贩卖做网站资料广告词
  • 国外jquery特效网站天津市住房与城乡建设厅网站
  • 手机版企业网站php软文发布软件
  • 莆田城市投资建设集团网站网页设计免费模板中文
  • 网站推广目标关键词自己做的网站验证码出不来怎么
  • 推荐seo关键词优化seo网站点击量排名优化
  • 主流网站开发语言电子商务 做网站
  • 建的网站403做网站推广费用
  • 男男互做网站徐州软件开发培训
  • 湘潭做网站电话磐石网络青海教育厅门户网站
  • 古典风格网站模板html做网站给不给源代码
  • 公司网站建设费如何入账东莞做外贸网站公司
  • 宁夏众擎达网站建设织梦者网站模板
  • 外贸网站品牌官网建设python怎么做网站
  • 垂直网站建设方案免费发布推广的平台有哪些
  • 酒泉建设局网站滑动门代码 wordpress