zoukankan      html  css  js  c++  java
  • java实现23种设计模式之迭代器模式

    迭代器模式(Iterator Pattern)是 Java 编程环境中非常常用的设计模式。

    这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

    package com.ceshi15;
    
    public interface Iterator {
        //前移
        public Object previous();
        
        //后移
        public Object next();
        public boolean hasNext();
        
        //取得第一个元素
        public Object first();
    }
    package com.ceshi15;
    
    public interface Collection {
        
        public Iterator iterator();
        
        /*取得集合元素*/
        public Object get(int i);
        
        /*取得集合大小*/
        public int size();
    }

    实现类

    package com.ceshi15;
    
    public class MyIterator implements Iterator {
    
        private Collection collection;
        private int pos = -1;
        
        public MyIterator(Collection collection){
            this.collection = collection;
        }
        
        @Override
        public Object previous() {
            if(pos > 0){
                pos--;
            }
            return collection.get(pos);
        }
    
        @Override
        public Object next() {
            if(pos<collection.size()-1){
                pos++;
            }
            return collection.get(pos);
        }
    
        @Override
        public boolean hasNext() {
            if(pos<collection.size()-1){
                return true;
            }else{
                return false;
            }
        }
    
        @Override
        public Object first() {
            pos = 0;
            return collection.get(pos);
        }
    
    }
    package com.ceshi15;
    
    public class MyCollection implements Collection {
    
        public String string[] = {"A","B","C","D","E"};
        
        @Override
        public Iterator iterator() {
            return new MyIterator(this);
        }
    
        @Override
        public Object get(int i) {
            return string[i];
        }
    
        @Override
        public int size() {
            return string.length;
        }
    
    }
    package com.ceshi15;
    
    public class Test {
        public static void main(String[] args) {
            Collection collection = new MyCollection();
            Iterator it = collection.iterator();
            
            while(it.hasNext()){
                System.out.println(it.next());
            }
        }
    }

    可以模仿java迭代方法的实现。

    关键就是定义接口:hasNext, next。

    然后通过这种借口写出自己的集合框架

  • 相关阅读:
    leetcode 203
    vim插件管理器vundle
    centos7看电影
    getopt
    iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
    "ALView+PureLayout.h"
    UIPageViewController教程
    (Mac ox 10.11+) CocoaPods安装,卸载,使用说明
    CocoaPods集成到Xcode项目中的步骤
    label_设置行距、字距及计算含有行间距的label高度
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756309.html
Copyright © 2011-2022 走看看