找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1209|回复: 0

模式设计之迭代器

[复制链接]
发表于 2009-11-6 01:35:59 | 显示全部楼层 |阅读模式 IP:江苏扬州
using System;
using System.Collections.Generic;
using System.Text;
namespace _0090901
{
    abstract class Iterator
    {
        public abstract object First();
        public abstract object Next();
        public abstract bool  IsDone();
        public abstract object CurrentItem();
    }
    abstract class Aggregate
    {
        public abstract Iterator CreatIterator();
    }
    class ConcreateIterator : Iterator
    {
        private ConcreateAggregate aggregate;
        private int current = 0;
        public ConcreateIterator(ConcreateAggregate aggregate)
        {
            this.aggregate = aggregate;
         
        }
        public override object First()
        {
            return aggregate[0];
        }
        public override object Next()
        {
            object ret = null;
            current++;
            if (current <aggregate.Count)
            {
                ret = aggregate[current];
            }
            return ret;
        }
        public override bool IsDone()
        {
            return current >= aggregate.Count ? true : false;
        }
        public override object CurrentItem()
        {
            return aggregate[current];  
        }
    };
    class ConcreateAggregate : Aggregate
    {
        private IList<object> items = new List<object>();
        public override Iterator CreatIterator()
        {
            return new ConcreateIterator(this);
        }
        public int Count
        {
            get { return items.Count; }
        }
        public object this[int index]
        {
            get { return items[index]; }
            set { items.Insert(index, value); }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ConcreateAggregate a = new ConcreateAggregate();
            a[0] = "大鸟";
            a[1] = "小菜";
            a[2] = "行李";
            a[3] = "老外";
            a[4] = "公交内部员工";
            a[5] = "小偷";
            Iterator i = new ConcreateIterator(a);
            object item = i.First();
            while (!i.IsDone())
            {
                Console.WriteLine("{0}请买票!", i.CurrentItem());
                i.Next();
            }
            Console.Read();
        }
    }
}
23个模式很经典,最近一直在自己写着玩玩,没事贴点,怀恋我还是在写代码的。。哎。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 17:38 , Processed in 0.177798 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表