• 设计模式-迭代器模式


      迭代器模式(Iterator Pattern),提供一种方法顺序访问一个聚合对象中元素,而不暴露该集合对象的内部表示。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace PatternProject
    {
        public class People
        {
            public string name
            { get; set; }
    
            public string sex
            { get; set; }
    
            public int age
            { get; set; }
    
            public DateTime JoinDateTime
            { get; set; }
    
            public People(string name, string sex, int age)
            {
                this.name = name;
                this.sex = sex;
                this.age = age;
                this.JoinDateTime = DateTime.Now;
            }
        }
    
        public interface ISearcher  
        {
            bool Next();  //在迭代时,判断是否能获取下一个,外部遍历必需实现该方法
        }
    
        public interface IProvince  
        {
            ISearcher GetSearcher();  //获取迭代器对象
        }
    
    
        public class Province : IProvince
        {
            List<People> peopleList = new List<People>();
    
            public string name
            { get; set; }
    
            public Province(string name)
            {
                this.name = name;
            }
    
            public ISearcher GetSearcher()
            {
                return new Searcher(this, "黄某", "男", 45);
            }
    
            public People this[int index]
            {
                get { return peopleList[index]; }
                //set { peopleList.Add(value); }
            }
    
            public void Join(People people)
            {
                peopleList.Add(people);
            }
    
            public int GetPeopleCount()
            {
                return peopleList.Count;
            }
        }
    
    
        public class Searcher : People, ISearcher
        {
            Province _province;
            int _currentIndex;
    
            public Searcher(Province province, string name, string sex, int age)
                : base(name, sex, age)
            {
                _province = province;
                _currentIndex = -1;
            }
    
            public People Current
            {
                get { return _province[_currentIndex]; }
            }
    
            public bool Next()
            {
               _currentIndex++;
               return _province.GetPeopleCount() > _currentIndex;
            }
    
        }
    
    
    }
    
    
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace PatternProject
    {
        class Program
        {
            static void Main(string[] args)
            {
                Province SZProvince = new Province("深圳市");
                SZProvince.Join(new People("张三", "男", 25));
                SZProvince.Join( new People("李四", "男", 35));
                SZProvince.Join(new People("王五", "男", 30));
                SZProvince.Join(new People("赵六", "男", 28));
                SZProvince.Join(new People("谢七", "女", 20));
    
                Console.WriteLine("{0}共计人口:{1}人", SZProvince.name, SZProvince.GetPeopleCount());
                Searcher srh= (Searcher)SZProvince.GetSearcher();
    
                Console.WriteLine("人口检查官:{0}人口普查结果如下:", srh.name);
    
                while (srh.Next())
                {
                    People p=srh.Current;
                    Console.WriteLine("{0},{1},{2}岁于{3}入住;", p.name, p.sex, p.age, p.JoinDateTime);
                }
    
                Console.ReadKey();
            }
        }
    }
    

      

  • 相关阅读:
    技能的切实掌握 必须动手
    sqlite 网址
    android视频教程
    Windows Azure
    mysql 存储过程 获取统计结果
    “道家”幸福生活的组成
    [文摘20110724]徐鹤宁 语录
    eclipse swt
    mysq 存储过程 插入测试数据
    WPF 视频教程
  • 原文地址:https://www.cnblogs.com/zuowj/p/3504610.html
Copyright © 2020-2023  润新知