又是新的一天,今天周三了,项目发了一个版本,我擦就添加了个字段就要发个版,我也是醉了,有没有考虑司机的感受,更新也是要流量啊。哎人微言轻,做好自己吧,谁让咱是定制的呢,合作车企必须用咱的,今天在玩一种设计模式,说过要系统的过一遍的吗,就算忘记了以后再来看是不是能很快捡起来呢.尼玛整周整周的闲,人都要恍惚了;不管以后怎么样,这不还是自己吃饭的本领吗。好了我们来玩玩迭代器模式;
迭代器模式(Iterator Pattern)目前已经是一个没落的模式,基本上没人会单独写一个迭
代器;但是我们不能没玩过就像我们当初学java的界面编程一样,用不到我们也得了解一下;
下面我们写个Demo测试一下;迭代器实际上就是循环迭代就是对数据的遍历;还有为了体现简书的宗旨,觉得贴代码也是太过占用篇幅;今后写博客只贴关键代码,github将创建一个专栏,上传完整代码。
首先我们写个学生信息的接口:
package com.ldl.iteratortest;
/**
* @author deling
*2017年12月6日
*/
public interface StudentInderface {
public String getStudentInfo();
public void add(String name,String age,String gender);
public StudentIterator iteratot();
}
在一个迭代器接口
图片.png
现在我们实现一个学生信息实体:
package com.ldl.iteratortest;
import java.util.ArrayList;
import java.util.List;
/**
* @author deling 2017年12月6日
*/
public class StrdentImpl implements StudentInderface {
private List<StudentInderface> studentList = new ArrayList<StudentInderface>();
private String name;
private String age;
private String gender;
public StrdentImpl() {}
public StrdentImpl(String name, String age, String gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public String getStudentInfo() {
return this.name + "\t" + this.age + "\t" + this.gender;
}
@Override
public void add(String name, String age, String gender) {
this.studentList.add(new StrdentImpl(name, age, gender));
}
@Override
public StudentIterator iteratot() {
return new StudentIteratorImpl(this.studentList);
}
}
做一个迭代器实现:
public class StudentIteratorImpl implements StudentIterator {
private List<StudentInderface> studentList = new ArrayList<StudentInderface>();
private int currentitem = 0;
public StudentIteratorImpl(List<StudentInderface> studentList) {
super();
this.studentList = studentList;
}
@Override
public boolean hasNext() {
boolean b = true;
if (currentitem >= studentList.size() || studentList == null || studentList.isEmpty()) {
b = false;
}
return b;
}
@Override
public Object next() {
// TODO Auto-generated method stub
return this.studentList.get(this.currentitem++);
}
图片.png
图片.png
测试出了结果,我也不想记录太多,了解一下就行,开发中肯定不推荐自己写迭代器,因为java自带的Iterator就能满足开发需要,合作开发更是应该这样,下面我们附加一个通用类图;
图片.png
源码:https://github.com/delingli/DesignPatternsDemo