zoukankan      html  css  js  c++  java
  • 23种设计模式之迭代器模式(Iterator)

    迭代器模式是一种对象的行为型模式,提供了一种方法来访问聚合对象,而不用暴露这个对象的内部表示。迭代器模式支持以不同的方式遍历一个聚合对象,复杂的聚合可用多种方法来进行遍历;允许在同一个聚合上可以有多个遍历,每个迭代器保持它自己的遍历状态,因此,可以同时进行多个遍历操作。

    优点:

    1)支持集合的不同遍历。

    2)简化了集合的接口。

    使用场景:

    1)在不开发集合对象内部表示的前提下,访问集合对象内容。

    2)支持集合对象的多重遍历。

    3)为遍历集合中的不同结构提供了统一的接口。

    Iterator 模式

    public interface Aggregate  
    {  
        Iterator iterator();  
    }  
    public class Book  
    {  
        public Book()  
        {  
            //  
        }  
      
        public string GetName()  
        {  
            return "这是一本书";  
        }  
    } 
    public class BookShelf  
    {  
        private IList<Book> books;  
        public BookShelf(int initialsize)  
        {  
            this.books = new List<Book>(initialsize);  
        }  
      
        public Book GetBookAt(int index)  
        {  
            return books[index] as Book;  
        }  
      
        public int GetLength()  
        {  
            return books.Count;  
        }  
      
        public Iterator iterator()  
        {  
            return new BookShelfIterator(this);  
        }  
    }  
    public class BookShelfIterator : Iterator  
    {  
        private BookShelf bookShelf;  
        private int index;  
        public BookShelfIterator(BookShelf bookShelf)  
        {  
            this.bookShelf = bookShelf;  
            this.index = 0;  
        }  
      
        public bool HasNext()  
        {  
            if (index < bookShelf.GetLength())  
            {  
                return true;  
            }  
            else  
            {  
                return false;  
            }  
        }  
      
        public object Next()  
        {  
            Book book = bookShelf.GetBookAt(index) as Book;  
            index++;  
            return book;  
        }  
    }  
    public interface Iterator  
    {  
        bool HasNext();  
        Object Next();  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            //迭代器模式  
              BookShelf bookShelf = new BookShelf(4);  
            Iterator.Iterator it = bookShelf.iterator();  
            while (it.HasNext())  
            {  
                Book book = it.Next() as Book;  
                Console.WriteLine("" + book.GetName());  
            }  
        }  
    }  
  • 相关阅读:
    CSS3点赞动画特效源码下载
    jQuery仿阿里云购买选择购买时间长度
    Ubuntu系统操作快捷键
    DIV+CSS颜色边框背景等样式
    HTML5翻页电子书
    淡蓝风格的手机登录HTML模板
    HTML常用符号
    SQL SERVER实例解析
    div+css页面右侧底部悬浮层
    C#引用C++代码
  • 原文地址:https://www.cnblogs.com/guwei4037/p/6689449.html
Copyright © 2011-2022 走看看