美文网首页
第十二章____迭代器模式

第十二章____迭代器模式

作者: 博尔特uncle | 来源:发表于2017-12-06 14:53 被阅读0次

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

    迭代器模式(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

    相关文章

      网友评论

          本文标题:第十二章____迭代器模式

          本文链接:https://www.haomeiwen.com/subject/ynmqixtx.html