接口-关于Iterator设计模式的问题

问题描述

关于Iterator设计模式的问题

正如上图所示,有点小疑问。如果我现在想在ArrayList产生的迭代器上增加一个LinkedList
不能实现的方法,此时,方法肯定不能再Iterator抽象接口处增加,那我应该在什么地方
增加这个方法?应该如何增加这个方法?

解决方案

ArrayList的迭代器作为父类,再生成一个子类添加方法

解决方案二:

我的意思是这样的,如果利用迭代器模式,那么在客户端的代码应该是这样的:

 List myList = new ArrayList();
Iterator myIterator = myList.interator();

这时客户端得到的是一个Iterator的对象,只能调用Iterator接口中的方法,那么如果我要增加ArrayList产生的迭代器的功能的话,不能在Iterator接口中直接加,因为如果在Iterator接口中直接加的话,就会导致 LinkedList对应的那个Iterator实现类报错, 那我应该怎么处理呢?

解决方案三:

迭代器模式不关心别的方法,它就是指current movenext这两个方法。你添加别的方法和迭代器无关。迭代器接口就是指这两个方法。

时间: 2024-10-28 16:10:54

接口-关于Iterator设计模式的问题的相关文章

arraylist-JAVA小白问题:测试Iterable接口的Iterator迭代器方法时遇到的疑问

问题描述 JAVA小白问题:测试Iterable接口的Iterator迭代器方法时遇到的疑问 创建个Arraylist集合,放几个数据,然后用迭代器循环遍历,同时想做个判断,如果等于指定的数值的数据出现了,就删除它,继续迭代别的元素,单独用remove删除方法没问题,但把它和next方法合起来用,就报错了,求解,谢谢! 解决方案 既然你自己也标注了正确的和错误的,我给你提一下,你这里有三个点: 分别是,it.hasnext(),第一个it.next(),第二个next. 先解释一下it.hasn

java-collection接口的iterator方法返回类型?

问题描述 collection接口的iterator方法返回类型? collection接口的iterator方法返回类型是接口类型,怎么理解? 解决方案 这很正常,你直接用接口调用里面的方法就可以了.你不用关心具体实现接口的类是哪个. 解决方案二: 就好比计算机提供USB接口,你插上打印机.扫描仪.手机.U盘都可以,计算机认这个接口,而不管具体你是什么设备插进来了. 如果计算机不是提供USB接口,而是打印机一个口.扫描仪一个口.手机一个口--(别忘了光手机还有很多种呢),那多么麻烦. 一个道理

php中使用接口实现工厂设计模式的代码_php技巧

接口在php只能起到约束类的定义作用,虽不像c#/java那么直观,但基于oop的封装要求,使用接口可以提高程序的可扩展性,如实现代理设计模式. 复制代码 代码如下: <?php //人类接口 interface IHuman { function GetName(); } //男人类,实现人类接口 class ManClass implements IHuman { //获取姓名方法 public function GetName() { return "I'm man.".&

设计模式之iterator模式到STL中iterator迭代器

设计模式之iterator模式到STL中iterator迭代器 近日看<设计模式:可复用面向对象软件的基础>一书中23种模式中就有iterator迭代模式,且篇幅颇大.机缘巧合.我在分析STL代码结构的时候,同样发现iterator迭代器,且占据相当大的地位. 从设计模式的角度来看iterator模式 ü     意图 提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露对象的内部表示.我想GOF 的意图这次说的很明白了,就是我想遍历一个聚合对象.但又隐藏内部实现.该怎么办呢?本模式主要

java 容器与Iterator接口详细分析使用

iterator接口: 所以实现了collection接口的容器类都有一个iterator方法用以返回一个实现了iterator接口的对象. iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作. iterator接口定义了如下方法:  boolean hasnext(); //判断游标右边是否有元素object next(); //返回游标右边的元素并将游标移动到下一位置void remove(); //删除游标左边的元素,在执行next之后该操作只能执行一次   练习:  

学习JavaScript设计模式(接口)_javascript技巧

1.接口概述 1).什么是接口? 接口是提供了一种用以说明一个对象应该具有哪些方法的手段.尽管它可以表明这些方法的语义,但它并不规定这些方法应该如何实现. 2). 接口之利 促进代码的重用. 接口可以告诉程序员一个类实现了哪些方法,从而帮助其使用这个类. 有助于稳定不同类之前的通信方式. 测试和调式因此也能变得更轻松. 在javascript这种弱类型语言中,类型不匹配错误很难跟踪.使用接口可以让这种错误的查找变午更容易一点,因为此时如果一个对象不像所要求的类型,或者没有实现必要的方法,那么你会

设计模式相关面试题目

设计模式理论 1.什么是设计模式?你是否在你的代码里面使用过任何设计模式?在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案.平时用的比较多有单例模式(在内存中仅实例化一个对象时使用),适配器模式(典型的就是ListView和GridView的适配器),建造者模式(AlertDialog.Builder),观察者模式可能比较隐蔽,在Android源码中BaseAdapater的NotifyDataSetChanged的实现(?).

Java集合学习(十八) Iterator和Enumeration比较

这一章,我们对Iterator和Enumeration进行比较学习 第1部分 Iterator和Enumeration区别 在Java集合中,我们通常都通过 "Iterator(迭代器)" 或 "Enumeration(枚举类)" 去遍历集合.今天,我们就一起学习一下它们之间到底有什么区别. 我们先看看 Enumeration.java 和 Iterator.java的源码,再说它们的区别. Enumeration是一个接口,它的源码如下: package java

class-接口中有一个抽象类,请问继承这个接口时,需要实现这个抽象类吗?

问题描述 接口中有一个抽象类,请问继承这个接口时,需要实现这个抽象类吗? 接口中有一个抽象类,请问继承这个接口时,需要实现这个抽象类吗? 解决方案 调用的时候初始化实现应用就行,只是集成不引用,重写添加方法的话不需要 解决方案二: 黑马程序员--继承.抽象类.接口接口抽象类继承设计模式进阶之继承.接口.抽象类 解决方案三: 首先,你的需求定义有问题,接口中怎么会有抽象类呢?接口定义中都是public的公共方法声明,而不需要实现: 其次,实现某个接口的类如果是一个抽象类的话,那么它就可以不必实现接