什么是设计模式
设计模式是经常使用、大多数人知道,有特定目录的代码设计经验。设计模式可以提高代码可维护性,可提升代码运行效率,也能提高系统可靠性。设计模式可以分为三类,分别是创建型、结构型和行为型。以下就迭代器模式简要概述。
什么是迭代器模式
迭代器模式用于顺序访问集合对象的元素,不用关心集合内部底层实现。迭代器模式属于行为型模式,一般在JAVA领域应用较多。
应用场景
1、不用关心集合内部,顺序获取集合元素的场景
优势与劣势
优点:增加聚合类和迭代器都很方便,不用更改原有代码,迭代器减少了聚合类逻辑。
缺点:数据与迭代逻辑分离,增加聚合类就要增加迭代器,代码量直接成倍增加。
小试牛刀
比如我们自己新增一个迭代器Iterator接口,添加验证是否存在下个元素的方法,以及获取下个元素方法;然后实现一个自己的迭代器MyIterator类,我们在这个类中定义集合属性,分别实现迭代器的两个方法。最后创建自己的迭代器对象并传入集合,就可以拿出每个元素了。
类的依赖关系图为:
1、创建迭代器接口并添加具体方法
/**
* 迭代器接口
* @author senfel
* @version 1.0
* @date 2022/8/31 10:56
*/
public interface Iterator {
/**
* 下一个标识
* @return
*/
Boolean hasNext();
/**
* 获取对象
* @return
*/
Object getObj();
}
2、实现自己的迭代器,实现下个标识和获取下个对象的方法
/**
* 我的迭代器
* @author senfel
* @version 1.0
* @date 2022/8/31 11:06
*/
public class MyIterator implements Iterator{
/**
* 集合对象
*/
private List<Object> objectList;
/**
* 索引
*/
private Integer index = -1;
public MyIterator(List<Object> objectList) {
this.objectList = objectList;
}
@Override
public Boolean hasNext() {
if(++index < objectList.size()){
return true;
}
return false;
}
@Override
public Object getObj() {
return objectList.get(index);
}
}
3、迭代器模式测试
/**
* 迭代器模式测试
* @author senfel
* @version 1.0
* @date 2022/8/31 11:16
*/
@SpringBootTest
public class TestIteratorPattern {
@Test
public void Test(){
//创建测试集合
List<Object> list = new ArrayList<>(Arrays.asList("senfel", "liyan", "zhangsan", "lisi", "wangwu"));
//获取我的迭代器
MyIterator myIterator = new MyIterator(list);
//迭代拿出每个元素
for(Iterator iter= myIterator; iter.hasNext();){
Object obj = iter.getObj();
System.err.println(obj.toString());
}
}
}
测试结果:
senfel
liyan
zhangsan
lisi
wangwu
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154684.html