日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式:迭代器模式(Iterator)

發布時間:2024/4/11 asp.net 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式:迭代器模式(Iterator) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。


歡迎跳轉到本文的原文鏈接:https://honeypps.com/design_pattern/iterator/

提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內部表示。又稱游標(Cursor)模式

迭代器模式角色組成:

  • 抽象容器角色(Aggregate):負責提供創建具體迭代器角色的接口,一般是一個接口,提供一個iterator()方法,例如java中的Collection接口,List接口,Set接口等。
  • 具體容器角色(ConcreteAggregate):就是實現抽象容器的具體實現類,比如List接口的有序列表實現ArrayList,List接口的鏈表實現LinkedList,Set接口的哈希列表的實現HashSet等。
  • 抽象迭代器角色(Iterator):負責定義訪問和遍歷元素的接口。
  • 具體迭代器角色(ConcreteIterator):實現迭代器接口,并要記錄遍歷中的當前位置。
  • 舉個簡單案例
    1 Iterator

    public interface Iterator {public Object next();public boolean hasNext(); }

    2 ConcreteIterator

    public class ConcreteIterator implements Iterator {private List<Object> list = Collections.emptyList();private int current = 0;public ConcreteIterator(List<Object> list){this.list = list;}@Overridepublic Object next(){Object obj = null;if(this.hasNext()){obj = this.list.get(current++);}return obj;}@Overridepublic boolean hasNext(){if(current == list.size()){return false;}return true;} }

    3 Aggregate

    public interface Aggregate {public void add(Object obj);public void remove(Object obj);public Iterator iterator(); }

    4 ConcreteAggregate

    public class ConcreteAggregate implements Aggregate {private List<Object> list = new ArrayList<>();@Overridepublic void add(Object obj){list.add(obj);}@Overridepublic void remove(Object obj){list.remove(obj);}@Overridepublic Iterator iterator(){return new ConcreteIterator(list);} }

    5 測試代碼

    Aggregate ag = new ConcreteAggregate();ag.add("zzh");ag.add("jj");ag.add("qq");Iterator it = ag.iterator();while(it.hasNext()){System.out.println(it.next());}

    輸出:

    zzh jj qq

    優缺點
    優點:

  • 簡化了遍歷方式,對于對象集合的遍歷,還是比較麻煩的,對于數組或者有序列表,我們尚可以通過游標來取得,但用戶需要在對集合了解很清楚的前提下,自行遍歷對象,但是對于hash表來說,用戶遍歷起來就比較麻煩了。而引人了迭代器方法后,用戶用起來就簡單的多了。
  • 可以提供多種遍歷方式,比如說對有序列表,我們可以根據需要提供正序遍歷,倒序遍歷兩種迭代器,用戶用起來只需要得到我們實現好的迭代器,就可以方便的對集合進行遍歷了。
  • 封裝性良好,用戶只需要得到迭代器就可以遍歷,而對于遍歷算法則不用去關心。
  • 缺點:

  • 對于比較簡單的遍歷(像數組或者有序列表),使用迭代器方式遍歷較為繁瑣,比如ArrayList,用for循環的方式遍歷會更好一點,詳細可以參考《Java集合框架:ArrayList》

  • 適用場景
    ?迭代器模式是與集合共生共死的,一般來說,我們只要實現一個集合,就需要同時提供這個集合的迭代器,就像Java中的Collection,List,Set,Map等,這些集合都有自己的迭代器。假如我們要實現一個這樣的新的容器,當然也需要引入迭代器模式,給我們的容器實現一個迭代器。但是,由于容器與迭代器的關系太密切了,所以大多數語言在實現容器的時候都給提供了迭代器,并且這些語言提供的容器和迭代器在絕大多數情況下就可以滿足我們的需要,所以現在需要我們自己取實踐迭代器模式的場景還是比較少見的,我們只需要使用語言中已有的容器和迭代器就可以了。


    參考資料

  • 《23種設計模式》
  • 《23種設計模式(13):迭代器模式》
  • 《Java集合框架:ArrayList》
  • 歡迎跳轉到本文的原文鏈接:https://honeypps.com/design_pattern/iterator/

    歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。


    總結

    以上是生活随笔為你收集整理的设计模式:迭代器模式(Iterator)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成年男女免费视频网站 | 亚洲乱妇老熟女爽到高潮的片 | 中文字幕一区二区三区乱码在线 | 久久天天东北熟女毛茸茸 | 色女人综合 | 久久国产乱 | 爱爱视频在线播放 | 一级黄色片国产 | 久久精品视频99 | 亚洲最黄网站 | 动漫av一区二区三区 | 欧美一区二三区 | 欧美性猛交xxxx乱 | 久久久久久久久久久久久女过产乱 | 国产成人午夜 | 91看片成人| 精品一区二区三区无码视频 | 亚洲一区二区偷拍 | 日韩欧 | 老司机av福利 | 亚洲人女屁股眼交6 | 亚洲一区欧美 | 久久久久久久久久成人 | 桃谷绘里香在线播放 | 日韩福利电影在线观看 | 日本不卡高清视频 | 亚洲一区免费在线观看 | 国产影视一区二区三区 | 欧美一级生活片 | аⅴ天堂中文在线网 | 欧美亚洲视频 | 免费观看一区二区三区毛片 | 福利色播| 国产精品福利在线观看 | 中日精品一色哟哟 | 欧洲亚洲自拍 | 人成网站在线观看 | www.xxx.日本| 欧美激情在线狂野欧美精品 | 日韩人妻一区二区三区蜜桃 | 捆绑调教sm束缚网站 | 久色视频在线播放 | 91在线一区二区三区 | www.成人在线观看 | 国产成人啪一区二区 | 日本强好片久久久久久aaa | 亚洲欧美一区二区三区在线观看 | 中文字幕在线免费观看 | 精品一区二区三区av | 国产精品无码久久久久成人app | 91视频一区二区 | 黄色在线观看视频网站 | 精品国产一区二区三区久久久久久 | 91大神网址 | 日本一区二区三区免费观看 | 日韩久久网 | 被两个男人吃奶三p爽文 | 亚洲春色另类 | 国产一区免费在线 | 亚洲成av人片一区二区梦乃 | 激情久久免费视频 | 亚洲91视频 | 日本不卡视频在线 | 亚洲精品69 | 日本一区二区三区电影在线观看 | 韩国毛片网站 | 欧美一区二区三区免费视频 | 亚洲v在线 | 国内精品国产成人国产三级 | 久久99精品久久久久久水蜜桃 | 亚洲一区在线免费 | 日韩免费av在线 | 九色porny自拍| av免费在线观看网站 | 中文字幕 成人 | 蜜桃av噜噜 | 日本高清视频一区 | 五月天婷婷色综合 | xxxxx黄色片 噜噜噜噜噜色 | 饥渴放荡受np公车奶牛 | 亚洲AV无码精品黑人黑人 | 日本3p视频 | 香蕉av一区二区三区 | 久久一区二区三区精品 | 久久久穴 | 国产成人av一区 | 国产区精品在线 | 在线精品观看 | 色婷婷色综合 | 国精品人妻无码一区二区三区喝尿 | 精品黑人一区二区三区观看时间 | 国产伦精品一区二区三区照片 | 欧美骚少妇 | 精品久久人妻av中文字幕 | 精品久草 | 91精品久久人妻一区二区夜夜夜 | 国产第七页 | 色男人影院 | 久久蜜桃av |