首页 > 其他 > 详细

设计模式(10)迭代器模式

时间:2019-04-02 00:32:33      阅读:154      评论:0      收藏:0      [点我收藏+]

迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

技术分享图片

下面我们利用java自带的迭代器接口实现这个迭代器模式

首先我们定义一个自定义的集合类,并实现它的迭代器

public class Book {

    public Book(String name, Double price) {
        this.name = name;
        this.price = price;
    }

    /**
     * 名称
     */
    private String name;
    /**
     * 价格
     */
    private Double price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }
}
public class MyCollection {

    private List<Book> dataList = new ArrayList<>();

    public void add(Book data) {
        dataList.add(data);
    }

    public void remove(Book data) {
        dataList.remove(data);
    }

    public MyIterator getIterator() {
        return new MyIterator(this.dataList);
    }
}
public class MyIterator implements Iterator<Book> {

    private List<Book> dataList;

    private int index;

    public MyIterator(List<Book> dataList) {
        this.dataList = dataList;
        index = 0;
    }

    @Override
    public boolean hasNext() {
        return index < dataList.size();
    }

    @Override
    public Book next() {
        return dataList.get(index++);
    }
}

测试

public static void main(String[] args) {
        MyCollection collection = new MyCollection();
        collection.add(new Book("SQL从删库到跑路",66.6));
        collection.add(new Book("JAVA从入门到放弃",88.8));

        MyIterator iterator = collection.getIterator();
        while (iterator.hasNext()) {
            Book book = iterator.next();
            System.out.println("书名:"+ book.getName() + ",售价:" + book.getPrice());
        }
    }

结果

技术分享图片

设计模式(10)迭代器模式

原文:https://www.cnblogs.com/oeleven/p/10640123.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!