一头扎进设计模式-迭代器模式

本文介绍迭代器模式的概念及其实现方式,通过一个简单的示例代码展示了如何利用迭代器模式来访问集合中的元素,同时避免暴露集合的内部结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

用自己的话说:封装了列表对象,不把底层的东西暴露给用户,注意:每次获取迭代器的时候,都会取到一个新的迭代器,所以记得不能直接取着用。

代码:
首先,我们定义一个迭代器接口:

public interface OfferIterator {
    Iterator<String> iterator();
}

然后定义使用迭代器的类:

public class MyMenu implements OfferIterator {
    String[] menu = new String[20];
    /**
     * 
     */
    public MyMenu() {
        // 
        for(int i = 0 ; i < 20 ; i ++){
            menu[i]=String.valueOf(i);//在构造的时候就给一些默认值
        }
    }

    private class MyIterator implements Iterator<String>{
        String[] s;
        int position=0;
        /**
         * 
         */
        public MyIterator(String[] s) {
            // 
            this.s=s;
        }

        /* (非 Javadoc)
         * @see java.util.Iterator#hasNext()
         */
        @Override
        public boolean hasNext() {
            // 
            if(position>(s.length-1)){
                return false;
            }else{
                return true;
            }
        }

        /* (非 Javadoc)
         * @see java.util.Iterator#next()
         */
        @Override
        public String next() {
            //
            String string = s[this.position];
            position++;
            return string;
        }

        /* (非 Javadoc)
         * @see java.util.Iterator#remove()
         */
        @Override
        public void remove() {
            // 
            System.out.println("无法删除");
        }

    }

    /* (非 Javadoc)
     * @see com.jjt.iterator.OfferIterator#iterator()
     */
    @Override
    public Iterator<String> iterator() {
        //
        return new MyIterator(menu);//这里每次返回都是一个新的对象
    }
}

测试:

    public static void main(String[] args){
        MyMenu myMenu = new MyMenu();
        Iterator<String> i = myMenu.iterator();
        for(;i.hasNext();){
            System.out.println(i.next());   
        }   
    }

结果:

0
1
2
3
4
5
.
.
.
.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值