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

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

下面我们利用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());
        }
    }

结果

posted @ 2019-04-02 00:03  oeleven  阅读(187)  评论(0编辑  收藏  举报