zoukankan      html  css  js  c++  java
  • 设计模式之GOF23迭代器模式

    迭代器模式Iterator

    /**
     * 自定义迭代器接口
     * @author 小帆敲代码
     *
     */
    public interface MyIterator {
      void first();//游标置于第一个
      void last();//游标置于最后一个
      
      boolean isfirst();
      boolean isLast();
      
      void next();//游标后移一个
      boolean hasNext();//是否有下一个
      
      Object getCurrentObj();//获得当前对象
    }

    /**
     * 具体聚合类
     * @author 51104
     *
     */
    public class ConcreteAggregation {
      private List<Object> list=new ArrayList<Object>();
      public List<Object> getList() {
       return list;
      }
      public void setList(List<Object> list) {
       this.list = list;
      }
      public void addObj(Object obj) {
       list.add(obj);
      }
      public void removeObj(Object obj) {
       list.remove(obj);
      }
      public MyIterator getMyIterator() {
       return new ConcreteIterator();
      }
      //内部类可以使用外部属性
      private class ConcreteIterator implements MyIterator{
       private int cursor;
       @Override
       public void first() {
        cursor=0;
       }
       @Override
       public void last() {
        cursor=list.size()-1;
       }
       @Override
       public boolean isfirst() {
        return cursor==0?true:false;
       }
       @Override
       public boolean isLast() {
        return cursor==(list.size()-1)?true:false;
       }
       @Override
       public void next() {
         if(cursor<list.size()) {
          cursor+=1;
         }
       }
       @Override
       public boolean hasNext() {
        if(cursor==list.size())
         return false;
        return true;
       }
       @Override
       public Object getCurrentObj() {
        return list.get(cursor);
       }
       
      }
    }
    public class Client {
      public static void main(String[] args) {
       ConcreteAggregation ca=new ConcreteAggregation();
       ca.addObj("aa");
       ca.addObj("bb");
       ca.addObj("cc");
       
       MyIterator mi=ca.getMyIterator();
       while(mi.hasNext()) {
        System.out.println(mi.getCurrentObj());
        mi.next();
       }
      }
    }
  • 相关阅读:
    jmeter在返回的json串中提取需要的值
    selenium 浏览器驱动下载地址
    Postman设置环境变量
    Selenium中自动输入10位随机数字的方法
    Selenium-java 中 对于下拉框 对于网页上的下拉框 如何定位
    Selenium中如何运行 auto.exe 文件
    Selenium 中 高亮元素
    linux mysql安装
    数据库中的一对多、多对多的关系讲解
    Django Models 介绍
  • 原文地址:https://www.cnblogs.com/code-fun/p/11357806.html
Copyright © 2011-2022 走看看