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

    定义(百度百科):
          迭代器模式(Iterator Pattern)提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。

    UML类图:

    具体代码:

    public abstract class Aggregate {
        abstract Iterator createIterator();
    }
    
    public class ConcreteAggregate extends Aggregate {
        @Override
        Iterator createIterator() {
            return new ConcreteIterator();
        }
    }
    
    public interface Iterator {
        public void first();
        public void next();
        public boolean hasNext();
        public Object currentItem();
    }
    
    public class ConcreteIterator implements Iterator {
        @Override
        public void first() {
    
        }
    
        @Override
        public void next() {
    
        }
    
        @Override
        public boolean hasNext() {
            return false;
        }
    
        @Override
        public Object currentItem() {
            return null;
        }
    }
    
    public class Client {
        public static void main(String[] args) {
            Aggregate aggregate = new ConcreteAggregate();
            aggregate.createIterator().first();
        }
    }

    模块说明:
    Iterator:它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法
    ConcreteIterator:它实现了抽象迭代器接口,完成对聚合对象的遍历
    Aggregate:它用于存储和管理元素对象,声明一个createIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色
    ConcreteAggregate:它实现了在抽象聚合类中声明的createIterator()方法,该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例

    适用场景:
    由于Java的类库都已经实现了迭代器模式,因此在实际开发中,
    我们只需要直接使用已定义好的迭代器即可,迭代器已经成为我们操作聚合对象的基本工具之一

    优缺点:
    优点:
    可以以不同的遍历方式遍历整个聚合
    迭代器简化了聚合的接口

    缺点:
    抽象迭代器的设计难度较大,需要充分考虑到系统将来的扩展

    总结:
    控制访问聚合对象里的元素

  • 相关阅读:
    JavaScript文件加载器LABjs API详解 转
    AMD及requireJS 转
    C#中数组、ArrayList和List三者的区别 转
    CSS魔法堂:那个被我们忽略的outline
    CSS魔法堂:改变单选框颜色就这么吹毛求疵!
    CSS魔法堂:display:none与visibility:hidden的恩怨情仇
    CSS魔法堂:一起玩透伪元素和Content属性
    CSS魔法堂:稍稍深入伪类选择器
    CSS魔法堂:更丰富的前端动效by CSS Animation
    CSS魔法堂:Transition就这么好玩
  • 原文地址:https://www.cnblogs.com/daily-note/p/7412299.html
Copyright © 2011-2022 走看看