结合项目实例 回顾传统设计模式(九)迭代器模式

简介:

关于迭代器模式,我们所需要知道的第一件事情就是它依赖于一个名为迭代器的接口。一旦我们有了这个接口,就可以为各种那个对象集合实现迭代器:数组、列表、散列表。

项目实例我们就拿用户角色模块来举例

背景

1.某用户作为应用管理员获取一组关于管理角色的arraylist权限组

2.该用户作为应用开发者获取一组关于开发角色的数组形式的权限组

...

  ///   <summary>
    
///  迭代器接口
    
///   </summary>
     public  interface RoleIterator
    {
         // 返回一个布尔值,让客户知道是否还有更多的元素
         bool hasnext();
         // 返回下一个元素
        Object next();
    }

     ///   <summary>
    
///  为管理者服务的迭代器
    
///   </summary>
     public  class ManagerRoleIterator : RoleIterator
    {
        ArrayList items;
         int position =  0;
         public ManagerRoleIterator(ArrayList RoleItems)
        {
             this.items = RoleItems;
        }
         public  bool hasnext()
        {
             if (position >= items.Count || items[position] ==  null)
            {
                 return  false;
            }
             return  true;
        }
         public Object next()
        {
            Object ri = items[position];
            position++;
             return ri;
        }
    }

     ///   <summary>
    
///  管理者
    
///   </summary>
     public  class ManagerRole
    {
        ArrayList items;
         public RoleIterator createIterator()
        {
             return  new ManagerRoleIterator(items);
        }
    }

     ///   <summary>
    
///  为开发者服务的迭代器
    
///   </summary>
     public  class DevelopRoleIterator : RoleIterator
    {
        RoleItem[] items;
         int position =  0;
         public DevelopRoleIterator(RoleItem[] RoleItems)
        {
             this.items = RoleItems;
        }
         public  bool hasnext()
        {
             if (position >= items.Length || items[position] ==  null)
            {
                 return  false;
            }
             return  true;
        }
         public Object next()
        {
            RoleItem ri = items[position];
            position++;
             return ri;
        }
    }

     ///   <summary>
    
///  开发者
    
///   </summary>
     public  class DevelopRole
    {
         static  int MAX_ITEMS =  6;
         int numberofitems =  0;
        RoleItem[] items;
         public RoleIterator createIterator()
        {
             return  new DevelopRoleIterator(items);
        }
    }

     ///   <summary>
    
///  用户
    
///   </summary>
     public  class UserRole
    {
        ManagerRole mrole;
        DevelopRole drole;
         public UserRole(ManagerRole mrole, DevelopRole drole)
        {
             this.mrole = mrole;
             this.drole = drole;
        }
         public List<Object> getRole()
        {
            List<Object> lo =  new List< object>();
            RoleIterator mi = mrole.createIterator();
            RoleIterator di = drole.createIterator();
            lo.AddRange(getRole(mi));
            lo.AddRange(getRole(di));
             return lo;
        }
         public List<Object> getRole(RoleIterator ri)
        {
            List<Object> li =  new List< object>();
             while (ri.hasnext())
            {
                RoleItem ritem = (RoleItem)ri.next();
                li.Add(ritem);
            }
             return li;

        }

    }

总结:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。把访问的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。


本文转自 熬夜的虫子  51CTO博客,原文链接:http://blog.51cto.com/dubing/712416


相关文章
|
7月前
|
设计模式 存储 JavaScript
【设计模式】【行为型模式】迭代器模式(Iterator)
一、入门 什么是迭代器模式? 迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种顺序访问聚合对象中元素的方法,而不需要暴露其底层表示。迭代器模式将遍历逻辑从聚合对象中分离出
211 11
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
229 4
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
129 2
|
设计模式 Java 开发者
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。对于快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文重点介绍迭代器模式,通过具体示例展示了如何在Kotlin中实现迭代器模式,包括使用Iterator、Iterable接口及重载iterator运算符的方法。
118 4
|
设计模式 Java 开发者
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
本教程详细讲解了Kotlin中的迭代器模式,包括如何通过实现Iterator和Iterable接口以及重载iterator运算符来实现可遍历的自定义集合。示例展示了如何创建一个图书集类,并通过不同方式使其支持遍历操作,适合希望深入了解Kotlin迭代器模式的开发者。
169 3
|
设计模式 Java Kotlin
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
126 2
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
111 1
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
93 1
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。