第十二章____迭代器模式

又是新的一天,今天周三了,项目发了一个版本,我擦就添加了个字段就要发个版,我也是醉了,有没有考虑司机的感受,更新也是要流量啊。哎人微言轻,做好自己吧,谁让咱是定制的呢,合作车企必须用咱的,今天在玩一种设计模式,说过要系统的过一遍的吗,就算忘记了以后再来看是不是能很快捡起来呢.尼玛整周整周的闲,人都要恍惚了;不管以后怎么样,这不还是自己吃饭的本领吗。好了我们来玩玩迭代器模式;

迭代器模式(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 studentList = new ArrayList();
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 studentList = new ArrayList();
private int currentitem = 0;

public StudentIteratorImpl(List 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

你可能感兴趣的:(第十二章____迭代器模式)