Android Ap开发设计模式第一篇:迭代器模式

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 05:36 点击:

Iterator Pattern迭代器模式
场景猜想
  经常编写代码都会碰到遍历一个数组,使用for循环得到数组下标之后去做进一步操作。例如下文代码:
 
 int[] array=new int[5];
        for(int i=0;i<array.length;i++){
            System.out.println(""+i);
        }
或:
 
  int[] array=new int[5];
        for(int i:array){
            System.out.println(""+i);
        }
 
当然,还有更多的作法,利用将 i 将下标推移的方式遍历数组元素。
  使用设计模式来编写的时候,可以将 i 的行为,抽象化为迭代器,这种模式我们称之为迭代器模式 。迭代器模式可以用来作为遍历一个集合体。java 亦提供了一个工具类: java.util.Iterator<E> ,与其类似。
 
 
场景需求
  书架上有5本技术书籍,要求将书籍名称一性遍历出来,将显示在Andriod 的 EditText 上面。以上面的需求为例,可以将具体需求具体到下面的示意图:


 
 
 
 
Aggregate接口
  Aggregate 接口是一个执行递增的“聚合”。实现此接口的类就变成类似数组、集合的“聚合”。表示己聚合的接口。
Iterator接口
  Iterator 接口执行元素递增,具有类似循环变量的功能。表示执行递增、遍历的接口。
Book 类
  Book 表示书籍,主要是为了获取书的详细。
BookShelf类
  BookShelf 表示书架,此类实现Aggregate接口从而将其作为聚合处理。
BookShelfIterator类
  BookShelfIterator表示扫描书架的类,实现了Iterator 的接口功能。
 
-----------------------------------------
IteratorPatternsActivity 类
  IteratorPatternsActivity 为Android 的主界面,用来显示和测试上面编写的代码
-----------------------------------------
代码实现:
  Aggregate接口
  
/**
 * 声明一个Iterator方法,这是为了建立一个可对应聚合的Iterator
 * 如欲递增、遍历或逐一检查某一个聚合时,利用iterator方法即可建立一个
 * 实现Iterator 接口 的类对象实例。
 * @author terry
 *
 */
public interface Aggregate {
    public abstract Iterator iterator();
}
 
  Iterator 接口
 
public interface Iterator {

    public abstract boolean hasNext();    //存在一条则返回true
           
    public abstract Object next();        //移到下一条记录
}
 
  next 方法是返回聚合当中的1个元素。不过,next 方法的功能并非仅仅如此。事实上它还会悄悄地先要在内部状态进入下一步,以便下次调用 next 方法时能确实返回下一个元素。而Iterator 只描述了有两个方法,具体这两个方法如何实现还要看 BookShelfIterator 内部的实现。
 
  Book 类
 
/**
 * 表示 书籍的类
 * @author terry
 *
 */
public class Book {

    private String name="";
    public Book(String name){
        this.name=name;
    }
   
    public String getName(){
        return this.name;
    }
}
 
  BookShelf 类
 
/**
 * 表示书架意图的类
 * 要实现Aggreagate接口 才能把这个类当作聚合来处理。
 * @author terry
 *
 */
public class BookShelf implements Aggregate{

    private Book[] books;
    private int last=0;
    public BookShelf(int maxSize){
        this.books=new Book[maxSize];
    }
   
    public Book getBookAt(int index){
        return books[index];
    }
   
   
    public BookShelf appendBook(Book boo

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1