• 设计模式之迭代器模式


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

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

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

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

  • 相关阅读:
    c++深拷贝与浅拷贝
    c++构造函数的explicit
    c++虚函数和虚函数表
    c++重载、重写、隐藏(重定义)
    c++传值、传指针、传引用
    ASP.Net Core API 学习の中间件
    WPF中String Format的用法
    ASP.Net Core API 全局处理异常
    989. Add to Array-Form of Integer
    1014. Best Sightseeing Pair
  • 原文地址:https://www.cnblogs.com/daily-note/p/7412299.html
Copyright © 2020-2023  润新知