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

海报素材网站推荐怎么开发网站

海报素材网站推荐,怎么开发网站,网站域名管理规范,大连小程序哪个开发公司好经典的设计模式有23种,但是常用的设计模式一般情况下不会到一半,我们就针对一些常用的设计模式进行一些详细的讲解和分析,方便大家更加容易理解和使用设计模式。 1-原理和实现 迭代器模式(Iterator Design Pattern)&a…

       经典的设计模式有23种,但是常用的设计模式一般情况下不会到一半,我们就针对一些常用的设计模式进行一些详细的讲解和分析,方便大家更加容易理解和使用设计模式。

1-原理和实现

       迭代器模式(Iterator Design Pattern),也叫作游标模式(Cursor Design Pattern)。它用来遍历集合对象。这里说的“集合对象”也可以叫“容器”“聚合对象”,实际上就是包含一组对象的对象,比如数组、链表、树、图、跳表。迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。

       迭代器是用来遍历容器的,所以,一个完整的迭代器模式一般会涉及容器容器迭代器两部分内容。为了达到基于接口而非实现编程的目的,容器又包含容器接口、容器实现类,迭代器又包含迭代器接口、迭代器实现类。容器中需要定义iterator()方法,用来创建迭代器。迭代器接口中需要定义hasNext()、currentItem()、next()三个最基本的方法。容器对象通过依赖注入传递到迭代器类中。

我们看下java里面迭代器的设计:

public interface Iterator<E> {//只粘贴核心方法boolean hasNext();E next();}//ArrayList内部类
private class Itr implements Iterator<E> {int cursor;       // index of next element to returnint lastRet = -1; // index of last element returned; -1 if no suchint expectedModCount = modCount;Itr() {}public boolean hasNext() {return cursor != size;}@SuppressWarnings("unchecked")public E next() {checkForComodification();int i = cursor;if (i >= size)throw new NoSuchElementException();Object[] elementData = ArrayList.this.elementData;if (i >= elementData.length)throw new ConcurrentModificationException();cursor = i + 1;return (E) elementData[lastRet = i];}}@Slf4j
public class IteratorTest {public static void main(String[] args) {List<String> list=new ArrayList<>();list.add("hello");list.add("world");list.add("java");Iterator<String> iterator = list.iterator();while(iterator.hasNext()){log.info(iterator.next());}}}

2-迭代器模式的优势

一般来讲,遍历集合数据有三种方法:for循环、foreach循环、iterator迭代器。

@Slf4j
public class IteratorTest {public static void main(String[] args) {List<String> list=new ArrayList<>();list.add("hello");list.add("world");list.add("java");// 第一种遍历方式:for循环for (int i = 0; i < list.size(); i++) {log.info(list.get(i));}log.info("*****************************");// 第二种遍历方式:foreach循环for (String str : list) {log.info(str);}log.info("*****************************");// 第三种遍历方式:迭代器遍历Iterator<String> iterator = list.iterator();while(iterator.hasNext()){log.info(iterator.next());}}}

       foreach循环只是一个语法糖而已,底层是基于迭代器来实现的。也就是说,上面代码中的第二种遍历方式(foreach循环代码)的底层实现,就是第三种遍历方式(迭代器遍历代码)。这两种遍历方式可以看作同一种遍历方式,也就是迭代器遍历方式。从上面的代码来看,for循环遍历方式比起迭代器遍历方式,代码看起来更加简洁。那我们为什么还要用迭代器来遍历容器呢?为什么还要给容器设计对应的迭代器呢?

       迭代器模式封装集合内部的复杂数据结构,开发者不需要了解如何遍历,直接使用容器提供的迭代器即可;
       迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一;
       迭代器模式让添加新的遍历算法更加容易,更符合开闭原则。除此之外,因为迭代器都实现自相同的接口,在开发中,基于接口而非实现编程,替换迭代器也变得更加容易。

http://www.khdw.cn/news/23754.html

相关文章:

  • cnzz统计代码放在网站seo综合查询站长工具关键词
  • 网站 改版 方案交换友链
  • 百度做网站怎么联系南宁网站seo优化公司
  • wordpress自定义栏目上传图片广州百度推广优化
  • 毕设做网站可以用模板吗网络营销方案策划书
  • 软件开发项目名称google搜索排名优化
  • 哪里可以免费做网站渠道销售怎么找客户
  • 上行10m企业光纤做网站全网关键词云查询
  • 湛江网站设计引流推广
  • 专业的营销型网站建设价格seo监控
  • netcompont网站建站营销策划方案
  • 自己电脑做网站 路由器新网站秒收录技术
  • 做网站大家都找谁郑州seo关键词
  • 网站标识描述可以填关键词吗快速百度
  • 电子商城网站开发项目经验深圳推广公司哪家好
  • 一站式做网站开发宁波seo关键词排名优化
  • 网络规划师报名时间广西网站seo
  • 国内看网站 优帮云软文推广的标准类型
  • 甘肃 网站建设seo的优化策略有哪些
  • 厚街做网站公司免费注册二级域名的网站
  • 公司网站开发主要技术有友情链接的网站
  • 2021公司起名字大全免费优化方法
  • 关键词优化排名软件怎么样seo技术自学
  • 免费的好网站昆明百度推广优化
  • 查建设公司资质的网站长春seo
  • 烟台网站制作网站首页布局设计模板
  • 网站建设页面底部叫什么百度seo快排软件
  • 手机网站淘宝客上海网络推广渠道
  • 广告推广网站怎么做互联网推广引流是做什么的
  • mvc中手把手做网站seo哪里可以学