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

做好网站建设如何学建设网站

做好网站建设,如何学建设网站,邢台网站建设多少钱,响应式网站广州网站建设迭代器模式是一种行为模式#xff0c;用于提供遍历一组对象的标准方式。 Iterator模式在Java Collection Framework中得到了广泛使用#xff0c;其中Iterator接口提供了遍历集合的方法。 根据GoF#xff0c;迭代器设计模式的意图是#xff1a; 提供一种在不暴露其基础表示… 迭代器模式是一种行为模式用于提供遍历一组对象的标准方式。 Iterator模式在Java Collection Framework中得到了广泛使用其中Iterator接口提供了遍历集合的方法。 根据GoF迭代器设计模式的意图是 提供一种在不暴露其基础表示的情况下访问聚合对象的元素的方法。 迭代器模式不仅涉及遍历集合我们还可以根据需求提供不同种类的迭代器。 迭代器模式通过集合隐藏了遍历的实际实现而客户端程序仅使用迭代器方法。 让我们通过一个简单的例子来了解这种模式。 假设我们有一个广播频道列表并且客户端程序想要逐个或根据频道类型遍历它们例如某些客户端程序只对英语频道感兴趣并且只想处理它们而没有想要处理其他类型的渠道。 因此我们可以向客户提供渠道的集合让他们编写逻辑来遍历渠道并决定是否处理它们。 但是此解决方案存在很多问题例如客户端必须提出遍历的逻辑。 我们无法确保客户端逻辑正确并且如果客户端数量增加那么将很难维护。 在这里我们可以使用Iterator模式并根据通道类型提供迭代。 我们应该确保客户端程序只能通过迭代器访问通道列表。 实现的第一部分是为我们的collection和iterator接口定义协定。 ChannelTypeEnum.java package com.journaldev.design.iterator;public enum ChannelTypeEnum {ENGLISH, HINDI, FRENCH, ALL; } ChannelTypeEnum是Java枚举 它定义所有不同类型的通道。 Channel.java package com.journaldev.design.iterator;public class Channel {private double frequency;private ChannelTypeEnum TYPE;public Channel(double freq, ChannelTypeEnum type){this.frequencyfreq;this.TYPEtype;}public double getFrequency() {return frequency;}public ChannelTypeEnum getTYPE() {return TYPE;}Overridepublic String toString(){return Frequencythis.frequency, Typethis.TYPE;}} Channel是具有属性频率和通道类型的简单POJO类。 ChannelCollection.java package com.journaldev.design.iterator;public interface ChannelCollection {public void addChannel(Channel c);public void removeChannel(Channel c);public ChannelIterator iterator(ChannelTypeEnum type);} ChannelCollection接口为我们的集合类实现定义合同。 请注意有一些方法可以添加和删除通道但是没有方法可以返回通道列表而有一个方法可以返回遍历的迭代器。 ChannelIterator接口定义以下方法 ChannelIterator.java package com.journaldev.design.iterator;public interface ChannelIterator {public boolean hasNext();public Channel next(); } 现在我们的基本接口和核心类已经准备好让我们继续实现集合类和迭代器。 ChannelCollectionImpl.java package com.journaldev.design.iterator;import java.util.ArrayList; import java.util.List;public class ChannelCollectionImpl implements ChannelCollection {private ListChannel channelsList;public ChannelCollectionImpl() {channelsList new ArrayList();}public void addChannel(Channel c) {this.channelsList.add(c);}public void removeChannel(Channel c) {this.channelsList.remove(c);}Overridepublic ChannelIterator iterator(ChannelTypeEnum type) {return new ChannelIteratorImpl(type, this.channelsList);}private class ChannelIteratorImpl implements ChannelIterator {private ChannelTypeEnum type;private ListChannel channels;private int position;public ChannelIteratorImpl(ChannelTypeEnum ty,ListChannel channelsList) {this.type ty;this.channels channelsList;}Overridepublic boolean hasNext() {while (position channels.size()) {Channel c channels.get(position);if (c.getTYPE().equals(type) || type.equals(ChannelTypeEnum.ALL)) {return true;} elseposition;}return false;}Overridepublic Channel next() {Channel c channels.get(position);position;return c;}} } 注意迭代器接口的内部类实现以便任何其他集合都不能使用该实现。 集合类也遵循相同的方法并且它们都具有Iterator接口的内部类实现。 让我们编写一个简单的测试类以使用我们的集合和迭代器根据类型遍历通道的集合。 IteratorPatternTest.java package com.journaldev.design.iterator;public class IteratorPatternTest {public static void main(String[] args) {ChannelCollection channels populateChannels();ChannelIterator baseIterator channels.iterator(ChannelTypeEnum.ALL);while (baseIterator.hasNext()) {Channel c baseIterator.next();System.out.println(c.toString());}System.out.println(******);// Channel Type IteratorChannelIterator englishIterator channels.iterator(ChannelTypeEnum.ENGLISH);while (englishIterator.hasNext()) {Channel c englishIterator.next();System.out.println(c.toString());}}private static ChannelCollection populateChannels() {ChannelCollection channels new ChannelCollectionImpl();channels.addChannel(new Channel(98.5, ChannelTypeEnum.ENGLISH));channels.addChannel(new Channel(99.5, ChannelTypeEnum.HINDI));channels.addChannel(new Channel(100.5, ChannelTypeEnum.FRENCH));channels.addChannel(new Channel(101.5, ChannelTypeEnum.ENGLISH));channels.addChannel(new Channel(102.5, ChannelTypeEnum.HINDI));channels.addChannel(new Channel(103.5, ChannelTypeEnum.FRENCH));channels.addChannel(new Channel(104.5, ChannelTypeEnum.ENGLISH));channels.addChannel(new Channel(105.5, ChannelTypeEnum.HINDI));channels.addChannel(new Channel(106.5, ChannelTypeEnum.FRENCH));return channels;}} 当我运行上面的程序时它将产生以下输出 IteratorPatternTest.java Frequency98.5, TypeENGLISH Frequency99.5, TypeHINDI Frequency100.5, TypeFRENCH Frequency101.5, TypeENGLISH Frequency102.5, TypeHINDI Frequency103.5, TypeFRENCH Frequency104.5, TypeENGLISH Frequency105.5, TypeHINDI Frequency106.5, TypeFRENCH ****** Frequency98.5, TypeENGLISH Frequency101.5, TypeENGLISH Frequency104.5, TypeENGLISH 重要事项 当您想提供一种标准方法来遍历集合并从客户端程序中隐藏实现逻辑时迭代器模式非常有用。 迭代逻辑嵌入在集合本身中它可以帮助客户端程序轻松地对其进行迭代。 JDK中的迭代器模式 我们都知道Collection框架Iterator是迭代器模式实现的最佳示例但您知道java.util.Scanner类也实现Iterator接口。 阅读这篇文章以了解Java扫描程序类。 这就是迭代器模式的全部我希望它是有用的并且易于理解。 参考 Java中的迭代器设计模式– JCG合作伙伴 Pankaj Kumar在开发人员食谱博客上的示例教程 。 翻译自: https://www.javacodegeeks.com/2013/08/iterator-design-pattern-in-java-example-tutorial.html
http://wiki.neutronadmin.com/news/23700/

相关文章:

  • 网站每天1万ip能收入多少WordPress评论后不会跳转
  • 广州黄埔做网站的公司哪家好中国万网域名注册官网
  • 比较好的高端网站制作公司五大门户网站分别是
  • 个人如何建设电子商务网站软件网站开发市场前景
  • 私人定制网站建设wordpress设置文章排序
  • 网站建设和运行遇到的问题红色网站 推荐
  • 如何编程做网站梵客官网
  • 网站生成app基础建设的意义
  • 河南县wap网站建设公司wordpress 标题 搜索
  • 大连住建部官方网站上海要做网站
  • 百度提交网站收录地址深圳市宝安区松岗邮政编码
  • 广州seo网站推广优化高端建筑物图片
  • 世界十大网站排名怎么制作视频教程
  • 关键词查找网站杭州设计公司老总被点火
  • 免费模板下载网站网络营销网站规划建设
  • 建立个网站广东建设工程信息网站6
  • 做编程的网站有哪些方面中国公司排行榜前十名
  • 做网站用js的好处泰安选择企业建站公司
  • 钓鱼网站的危害司法政务网站群建设
  • 怎么做网站的项目预算360免费视频网站建设
  • 分类信息网站营销网站建设功能是什么意思
  • 系部网站开发项目的目的福田网站建设seo信科
  • 做网站用的背景图桓台网站制作
  • qq邮箱咋与网站绑定提醒网络销售招聘
  • 网站通cms如果网站没有做icp备案吗
  • 网站建设中的注册和登录页面怎样做淘宝券网站
  • 宝安设计网站建设wordpress缓存
  • 镇江建设工程质量监督局网站做网站文字居中代码
  • 什么是网页?站长seo计费系统
  • 简单的做海报的网站煤炭网站建设企业