• 迭代模式


    代码
    using System;
    using System.Collections;
    using System.Collections.Generic;

    public class Node
    {
        
    public string Name
        {
            
    get;
            
    set;
        }
        
    public Node(string s)
        {
            
    this.Name=s;
        }
    }

    public class NodeCollection
    {
        
    private ArrayList list=new ArrayList();
        
    private int nodeIndex=0;
        
    public void AddNode(Node n)
        {
            list.Add(n);
            nodeIndex
    ++;
        }
        
    public Node GetNode(int i)
        {
            
    return ((Node)list[i]);
        }
        
        
    public int NodeIndex
        {
            
    get
            {
                
    return nodeIndex;
            }
        }
    }

    public abstract class Iterator
    {
        
    public abstract  Node Next();
    }
    public class ReverseIterator:Iterator
    {
        
    private NodeCollection nodeCollection;
        
    private int currentIndex;
        
        
    public ReverseIterator(NodeCollection c)
        {
            
    this.nodeCollection=c;
            currentIndex
    =c.NodeIndex-1;
        }
        
        
    public override Node Next()
        {
            
    if(currentIndex==-1)
            {
                
    return null;
            }
            
    else
            {
                
    return (nodeCollection.GetNode(currentIndex--));
            }
        }
    }


    public class MyClass
    {
        
    public static void Main()
        {
            NodeCollection c
    =new NodeCollection();
            c.AddNode(
    new Node("first"));
            c.AddNode(
    new Node("Second"));
            c.AddNode(
    new Node("third"));
            
            ReverseIterator i
    =new ReverseIterator(c);
            Node n;
            
    do
            {
                n
    =i.Next();
                
    if(n!=null)
                {
                    Console.WriteLine(
    "{0}",n.Name);
                }
            }
            
    while(n!=null);
        }
    }
    名称 Iterator
    结构  
    意图 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
    适用性
    • 访问一个聚合对象的内容而无需暴露它的内部表示。
    • 支持对聚合对象的多种遍历。
    • 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。
  • 相关阅读:
    SDN网络笔记【毕设-SDN网络】
    Latex笔记【Latex】
    小米路由器 3G 开启SSH 安装 MT 工具箱 【环境搭建,小米路由器】
    windows 下安装linux子系统及其可视化【Linux】
    11月1日数据结构讨论班 【杂】
    简单远程遥控程序【网络程序设计
    VPS使用小结【VPS】
    vim使用总结【Vim】
    域名解析【网络程序设计
    MySQL数据库修改字段名、字段类型、字段长度
  • 原文地址:https://www.cnblogs.com/mikechang/p/1724113.html
Copyright © 2020-2023  润新知