当前位置: 首页 > 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.yayakq.cn/news/214411/

相关文章:

  • Linux网站开发设计信息推广平台有哪些
  • 临沂网站建搭建网站基本步骤
  • 紧固件网站建设专业seo培训学校
  • 单一网页开发佛山厂家推广优化
  • 网站开发技术与应用课程设计wordpress本地访问很慢
  • 哪些网站做写字楼出租企业网厅
  • 金坛市住房和城乡建设局 网站wordpress页面属性模板怎么添加
  • 做网站写页面多少钱大型手机网站制作
  • html5 metro风格网站模板什么是优化型网站
  • 全国网站建设公司排行版网站后台有些不显示
  • 安阳做网站的费用深圳燃气公司电话95511
  • 中国空间站设计在轨飞行多少年广西seo优化
  • 宁波公司网站制作建网站什么语言
  • 网站建设知识问答百度关键词排名优化
  • 怎么把网站排名排上去企业网站的设计原则
  • 网站什么做才会更吸引客户桂林网站推广
  • 赤峰酒店网站建设哪家便宜产品设计有出路吗
  • 做微信的网站叫什么软件个人网站也需要备案吗
  • 网站建设设计 昆山教育网站建设 培训网站建设
  • 如何做国外的网站外贸公司怎么注册
  • 校园网站建设必要性免费的crm的app
  • 什么是网站开发中的分页男女做羞羞的故事网站
  • 网站开发资格证书人气最高的网络游戏排行榜
  • 网站建设与管理提纲品牌形象网站建设
  • 建设银行网站收款怎么打明细做网站的一年能挣多少钱
  • php技术应用于中小企业网站开发龙华营销型网站制作
  • flash 网站建设担保网站建设
  • 双流区规划局建设局网站迅雷磁力
  • 遂宁市做网站的公司上海网站建设方案策划
  • wap企业网站模板wordpress仿模版