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的类库都已经实现了迭代器模式,因此在实际开发中,
    我们只需要直接使用已定义好的迭代器即可,迭代器已经成为我们操作聚合对象的基本工具之一

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

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

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

  • 相关阅读:
    kafka概念使用简介注意点
    spring boot整合log4j2
    postgresql和oracle数据库对比
    postgresql数据操作
    Django缓存序列化信号
    Django补充
    Git学习
    JavaScript语法和类型
    Django分页
    Vue:配置组件
  • 原文地址:https://www.cnblogs.com/daily-note/p/7412299.html
Copyright © 2011-2022 走看看