响应式网站新闻部分怎么做,襄阳百度开户,网站域名后缀有什么用,自助建站一般适用于大型电子商务网站建设迭代器模式
介绍
设计模式定义案例迭代器模式行为型#xff1a;关注对象与行为的分离 提供了一种统一的方式来访问多个不同的集合两个集合#xff1a;使用了不同的数据存储方式 学生 和 警察 查询显示出集合的内容 #xff0c;使用相同的代码
问题堆积在哪里解决办法不同…迭代器模式
介绍
设计模式定义案例迭代器模式行为型关注对象与行为的分离 提供了一种统一的方式来访问多个不同的集合两个集合使用了不同的数据存储方式 学生 和 警察 查询显示出集合的内容 使用相同的代码
问题堆积在哪里解决办法不同的存储方式 统一集合查询代码1 统一出一个存储方式 2 设计一个查询基类来统一查询代码 3 每个集合提供 1 统一存储方式 2 一个查询实现接口迭代器的实现 类图 代码
interface BaseIteratorT
/// summary
/// 迭代器基类
/// /summary
public interface BaseIteratorT
{// 当前T Current();// 下一个bool MoveNext();// 重新开始void Reset();
}IteratorPolice
using System.Collections.Generic;public class IteratorPolice : BaseIteratorPeople
{// 列表ListPeople listPeople null;// 下标int currentIndex -1; IteratorPolice() { }public IteratorPolice(ListPeople list){listPeople list;}public People Current(){if (null listPeople)return null;if (listPeople.Count currentIndex)return null;return listPeople[currentIndex];}public bool MoveNext(){if (null listPeople)return false;if (listPeople.Count currentIndex)return true;return false;}public void Reset(){currentIndex -1;}
}IteratorStudent using System.Collections.Generic;public class IteratorStudent : BaseIteratorPeople
{// 列表ListPeople listPeople null;// 下标int currentIndex -1;IteratorStudent() { }public IteratorStudent(ListPeople list){listPeople list;}public People Current(){if (null listPeople)return null;if (listPeople.Count currentIndex)return null;return listPeople[currentIndex];}public bool MoveNext(){if (null listPeople)return false;if (listPeople.Count currentIndex)return true;return false;}public void Reset(){currentIndex -1;}}People public class People
{public string name;public int age;public bool married;
}StudentList
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class StudentList
{private ListPeople list new ListPeople();private People[] studentList new People[3];public StudentList(){People p1 new People(){name WH,age 15,married false};studentList[0] p1;People p2 new People(){name QT,age 16,married false};studentList[1] p2;People p3 new People(){name YY,age 15,married false};studentList[2] p3;for (int i 0; i studentList.Length; i){list.Add(studentList[i]);}}public BaseIteratorPeople GetIterator(){return new IteratorStudent(list);}
}PoliceList using System.Collections.Generic;public class PoliceList
{private ListPeople list new ListPeople();public PoliceList(){People p1 new People(){name WangQiang,age 23,married false};list.Add(p1);People p2 new People(){name ZhangQiang,age 30,married true};list.Add(p2);People p3 new People(){name LingQiang,age 31,married true};list.Add(p3);}public BaseIteratorPeople GetIterator(){return new IteratorPolice(list); }
}测试代码
using UnityEngine;public class TestDDQ : MonoBehaviour
{void Start(){{PoliceList pl new PoliceList();BaseIteratorPeople iterator pl.GetIterator();while (iterator.MoveNext()){People p1 iterator.Current();Debug.Log(姓名 p1.name 年龄 p1.age 是否结婚 p1.married );}}Debug.Log(------------------------------------------------------------------);{StudentList pl new StudentList();BaseIteratorPeople iterator pl.GetIterator();while (iterator.MoveNext()){People p1 iterator.Current();Debug.Log(姓名 p1.name 年龄 p1.age 是否结婚 p1.married );}}}
} 结果 总结
迭代器模式统一集合查询代码以这个为目标进现优化总结出的一个经验。
还是为了更深刻的理解设计原理和优化手段。