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

设计模式之GOF23迭代器模式相关推荐

  1. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

    设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用 ...

  2. 设计模式笔记(18)---迭代器模式(行为型)

    Gof定义 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露该对象的内部表示. 动机 在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象,我们希望在不暴露其内部结构的同时,可 ...

  3. 设计模式漫谈之迭代器模式

    谈恋爱是两个人的事,结婚是两个家庭的事.最近事也挺多的.我也挺烦的,有时候,我也为自己的将来担忧,我自认为自己的技术过硬,但是千里马只有遇到伯乐才能发挥作用. 技术上让我高兴的事是,有个技术问题终于突 ...

  4. JS设计模式初识(四)-迭代器模式

    定义 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即迭代器模式使不关心对象的内部构 ...

  5. 《Android源码设计模式》之迭代器模式

    迭代器模式介绍 迭代器模式(Iterator Pattern)又称为游标(Cursor) 模式,是行为型设计模式之一.我们对容器对象的访问必然会涉及遍历算法,如果我没将遍历方法封装到容器中,那么对于容 ...

  6. Java设计模式系列之——迭代器模式

    本篇我们采取倒叙的手法来讲解迭代器模式,先看下面一段我们在平时工作中常见的代码: package com.mazhichu.designpatterns.iterator;import java.ut ...

  7. Java设计模式 (1) —— Iterator迭代器模式

    拿到这个话题,首先搞清楚:什么是迭代器? 大家都学过 for-i 循环,for-i循环的本质就是 通过i++ 或者 i-- ,以实现 从数据的一端 一个一个地遍历数据元素,直到另一端的最后一个元素,将 ...

  8. 二、18【设计模式】之迭代器模式

    今天的博客主题 设计模式 --> 设计模式之迭代器模式 命令模式   CP  (Command Pattern) 定义 将一个请求封装成一个对象,使不同的请求把客户端参数化. 命令模式是对命令的 ...

  9. 设计模式:(迭代器模式)

    1.定义 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式.这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示. 迭代器模式属于行为 ...

  10. 设计模式学习总结-迭代器模式(Iterator Pattern)

    问题: 在面向对象的软件设计中,经常会遇到一些聚集对象,按一定的顺序的遍历访问问题,这个遍历算法究竟应该由谁来实现呢,聚集对象本身?这样聚集对象承受了过多的功能,不仅要维护聚集对象内的元素,还要提供遍 ...

最新文章

  1. windows性能计数器搜集方法
  2. 鸿蒙os整体战略发布会,就在明天,华为将发布“鸿蒙OS”整体战略,能否用于手机?...
  3. 实例详细讲解ASP生成静态页面方法
  4. java游戏+弹幕_JAVA 弹幕小游戏 1.0版本
  5. 【使用指南】WijmoJS 前端开发工具包
  6. archbang linux安装教程,ArchLinux系统安装教程
  7. 安卓小程序 自定义下拉刷新_支付宝小程序设计设计指南
  8. 编程语言对比 运算符
  9. Python模块(进阶3)
  10. selenium IDE下载及使用
  11. 深圳数据分析认证(CPDA)含金量怎么样?
  12. VC14(VC2015)安装失败,0x80240017 - 未指定的错误,解决办法
  13. 高一计算机知识点第一章,第一章计算机基础知识知识点总结
  14. PS一键磨皮美白扩展插件Delicious Retouch 5.0 汉化集合版 Win/Mac
  15. Windows明文密码获取
  16. 企业网站建设流程步骤,教你快速建网站
  17. 自我决定理论:促进内在动机、社会发展和幸福感
  18. 真假内推?直拿offer?别被无良中介给骗了
  19. IOS 个人苹果开发者账号申请流程
  20. Mysql数据库知识点归纳汇总

热门文章

  1. iOS自动布局高级用法 纯代码约束写法
  2. build.gradle文件介绍
  3. python正则表达式re
  4. Java使用HttpURLConnection上传文件
  5. php异步学习(2)
  6. log4j.properties和log4j.xml配置
  7. 用Python解决简单的水果分类问题(二)
  8. 孙鑫VC学习笔记:第一讲 Windows程序内部运行原理
  9. 拓端tecdat|在Python中自然语言处理生成词云WordCloud
  10. LeetCode5 最长回文子串