当前位置: 首页 > news >正文

ps做网站页面微网站建设的三个步骤

ps做网站页面,微网站建设的三个步骤,网络推广外包公司干什么的,太仓网站设计早晨设计Unity实现设计模式——迭代器模式 迭代器模式是一种行为型设计模式#xff0c;它提供了一种统一的方式来访问集合对象中的元素#xff0c;而不是暴露集合内部的表示方式。简单地说#xff0c;就是将遍历集合的责任封装到一个单独的对象中#xff0c;我们可以按照特定的方式…Unity实现设计模式——迭代器模式 迭代器模式是一种行为型设计模式它提供了一种统一的方式来访问集合对象中的元素而不是暴露集合内部的表示方式。简单地说就是将遍历集合的责任封装到一个单独的对象中我们可以按照特定的方式访问集合中的元素。 抽象迭代器Iterator定义了遍历聚合对象所需的方法包括hashNext()和next()方法等用于遍历聚合对象中的元素。 具体迭代器Concrete Iterator它是实现迭代器接口的具体实现类负责具体的遍历逻辑。它保存了当前遍历的位置信息并可以根据需要向前或向后遍历集合元素。 抽象聚合器Aggregate 一般是一个接口提供一个iterator()方法例如java中的Collection接口List接口Set接口等。 具体聚合器ConcreteAggregate就是抽象容器的具体实现类比如List接口的有序列表实现ArrayListList接口的链表实现LinkListSet接口的哈希列表的实现HashSet等。 简单来说就是容器的种类我们不需要知道是什么ListHasSet等我们只要获取到迭代器就可以进行遍历。 下面使用两个例子来说明 1.抽象的例子 一Aggregate 抽象聚合器 abstract class Aggregate{public abstract Iterator CreateIterator();}二ConcreteAggregate 具体聚合器 class ConcreteAggregate : Aggregate{private ArrayList _items new ArrayList();public override Iterator CreateIterator(){return new ConcreteIterator(this);}// Gets item countpublic int Count{get { return _items.Count; }}// Indexerpublic object this[int index]{get { return _items[index]; }set { _items.Insert(index, value); }}}三Iterator 抽象迭代器 abstract class Iterator{public abstract object First();public abstract object Next();public abstract bool IsDone();public abstract object CurrentItem();}四ConcreteIterator 具体迭代器 class ConcreteIterator : Iterator{private ConcreteAggregate _aggregate;private int _current 0;// Constructorpublic ConcreteIterator(ConcreteAggregate aggregate){this._aggregate aggregate;}// Gets first iteration itempublic override object First(){return _aggregate[0];}// Gets next iteration itempublic override object Next(){object ret null;if (_current _aggregate.Count - 1){ret _aggregate[_current];}return ret;}// Gets current iteration itempublic override object CurrentItem(){return _aggregate[_current];}// Gets whether iterations are completepublic override bool IsDone(){return _current _aggregate.Count;}}五测试 public class IteratorStructure : MonoBehaviour {void Start ( ){ConcreteAggregate a new ConcreteAggregate();a[0] Item A;a[1] Item B;a[2] Item C;a[3] Item D;// Create Iterator and provide aggregateIterator i a.CreateIterator();Debug.Log(Iterating over collection:);object item i.First();while (item ! null){Debug.Log(item);item i.Next();}} }2.现实例子 这里使用一个不同年代的歌曲集来进行演示 一SongInfo 歌曲信息 public class SongInfo{public string songName { get; protected set; }public string bandName { get; protected set; }public int yearReleased { get; protected set; }public SongInfo(string songName, string bandName, int yearReleased){this.songName songName;this.bandName bandName;this.yearReleased yearReleased;}public string ToStringEx(){return this.songName - this.bandName : this.yearReleased.ToString();}}二SongIterator 抽象迭代器 public interface SongIterator{IEnumerator GetIterator();}三SongsOfThe70s 70年代歌曲既是迭代器又是聚合器 public class SongsOfThe70s : SongIterator{// here it is a listprotected ListSongInfo bestSongs;public SongsOfThe70s(){bestSongs new ListSongInfo();}public void AddSong(string name, string artist, int year){SongInfo song new SongInfo(name, artist, year);bestSongs.Add(song);}//about yeild return :http://www.jb51.net/article/54810.htm// heartpublic IEnumerator GetIterator(){foreach (SongInfo song in bestSongs)yield return song;yield break;}}四SongsOfThe80s 80年代歌曲既是迭代器又是聚合器 public class SongsOfThe80s : SongIterator{// here we have an arrayprotected SongInfo[] bestSongs;public SongsOfThe80s(){bestSongs new SongInfo[0];}public void AddSong(string name, string artist, int year){SongInfo song new SongInfo(name, artist, year);// just for the sake of easyness of appending something we will convert the array to a listListSongInfo newSongs new ListSongInfo(bestSongs);// add a new elementnewSongs.Add(song);// and convert it back to an arraybestSongs newSongs.ToArray();}// heartpublic IEnumerator GetIterator(){foreach (SongInfo song in bestSongs)yield return song;yield break;}}五测试 void Start(){// creating the collections and adding some songs:SongsOfThe70s song70s new SongsOfThe70s();song70s.AddSong(song title, song artist, 1974);song70s.AddSong(song title2, song artist2, 1978);SongsOfThe80s song80s new SongsOfThe80s();song80s.AddSong(song title 80s, song artist 80s, 1985);song80s.AddSong(song title2 80s, song artist2 80s, 1989);// because of the iterator pattern we can loop through both types// of collections the same simple way and dont have to bother// with what type of collection the object stores:IEnumerator songsOfThe70sIterator song70s.GetIterator();while (songsOfThe70sIterator.MoveNext()){SongInfo info (SongInfo)songsOfThe70sIterator.Current;Debug.Log(Song 70s: info.ToStringEx());}IEnumerator songsOfThe80sIterator song80s.GetIterator();while (songsOfThe80sIterator.MoveNext()){SongInfo info (SongInfo)songsOfThe80sIterator.Current;Debug.Log(Song 80s: info.ToStringEx());}}
http://www.w-s-a.com/news/81125/

相关文章:

  • 微商城网站建设怎么样发稿是什么意思
  • dz建站与wordpress群晖做网站服务器速度快吗
  • 做手机网站的公司网站建设 app开发 图片
  • 网站开发技术背景介绍wordpress数据库重置密码
  • 开发建设网站的实施过程是一个logo设计品牌
  • 做360pc网站排名首页工程造价信息网官网首页
  • 产品销售网站模块如何设计大数据和网站开发
  • 现在帮别人做网站赚钱不济南做网站建设公司
  • 嘉兴网站建设哪家好最近三天的国际新闻大事
  • 安丘网站建设制作做网站口碑比较好的大公司
  • 成都专业做网站公司哪家好优化大师下载安装免费
  • 防蚊手环移动网站建设广东深圳有几个区
  • 网站建设找哪些平台宜兴网站开发
  • 免费网站应用软件wordpress添加动态图标
  • 中小企业网站建设客户需求调查问卷昆明网站建设一条龙
  • 网站内容的特点wordpress 移动端网页
  • 专门网站建设培训网站系统建设
  • 自己设计手机的网站wordpress主题加密教程
  • 北京网站建设公司飞沐卖水果网站建设的策划书
  • 北京免费自己制作网站短视频宣传片制作
  • 怎样进入谷歌网站电子商务网站建设软件选择
  • 建个普通网站多少钱设计师培训多少
  • 建设校园网站的意义视频链接提取下载
  • 天津电子商务网站wordpress安装图片
  • 青岛房产网站东莞网络营销外包公司
  • 网站建设中的页数网上工伤做实网站
  • 给公司做网站这个工作怎么样wordpress不支持中文标签
  • 湖南网站推广优化cc域名做门户网站
  • 网站开发大概多久怎么制做网站
  • 鄂州官方网站食品网站建设需求分析