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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

集合遍历[设计模式总结] 9. 迭代器模式

發布時間:2024/10/12 asp.net 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 集合遍历[设计模式总结] 9. 迭代器模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

工作之余抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這里和大家起一學習一下集合遍歷

????

引子

????例如Waitress類要遍歷打印兩種菜單,一種是基于ArrayList,一種是基于數組;

????則Waitress要需對他們分別用兩個不同的邏輯來遍歷。

????

????

義定

????Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

????迭代器模式供提了一種法方次序拜訪一個聚合象對中的各個素元,而又不暴露該象對的部內表現。

????

????

類圖

????

????

Iterator:抽象迭代器

????這是有所迭代器都必須實現的接口,利用該接口法方可以在集合素元之間游走。可用java.util.Iterator

????

ConcreteIterator:詳細迭代器

????詳細迭代器責負理管前目遍歷的置位、成完集合素元的遍歷。

public class DinerMenuIterator implements Iterator {MenuItem[] list;int position = 0; //記載前當遍歷置位public DinerMenuIterator(MenuItem[] list){this.list = list}public Object next(){MenuItem menuItem = list[position];position = position + 1;return menuItem; }public boolean hasNext(){if (position >= list.length || list[position] == null){return false;} else {return true;}} }

????

Aggregate:抽象聚合(集合)

每日一道理
人生是潔白的畫紙,我們個每人就是手握各色筆的畫師;人生也是一條看不到盡頭的長路,我們個每人則是人生道路的遠足者;人生還像是一塊神奇的土地,我們個每人則是手握農具的耕耘者;但人生更像一本難懂的書,我們個每人則是孜孜不倦的讀書郎。

????是對詳細集合類的抽象,便利戶客端代碼,將戶客端代碼從詳細集合象對中解耦。——讓戶客端:針對接口程編,而不針對實現程編

????

ConcreteAggregate:詳細聚合(集合)

????實現createIterator(),返回一個ConcreteIterator象對;該迭代器象對夠能遍歷象對集合。

public class DinerMenu {MenuItem[] menuItems;//返回迭代器接口public Iterator createIterator {return new DinerMenuIterator( menuItems );}//這個法方不再要需,因為會暴露部內實現!!public MenuItem[] getMenuItem(){return menuItems;} }

????

長處

????

  • 讓戶客遍歷你的象對,而又沒法窺視你存儲象對的方法
  • Iterator封裝“遍歷集合內個每象對的程過”;——將遍歷的任務放在迭代器上,而不是集合上;簡化了集合的接口和實現,也讓義務各得其所(單一職責準則 > 高內聚)
  • 每種ConcreteAggregate集合的部內實現可能不同,但遍歷法方都統起一來了,便利戶客端代碼。——戶客端代碼與集合實現類解耦。
  • ????

    ????

    缺陷

    ????

    ????

    應用場景

    ????盡量不要自己寫迭代器模式。應用Java供提的Iterator一般就足夠了。

    ????

    ????注:上例中是數組,所以自己寫了個Iterator;如果是ArrayList則直接應用.iterator()可即!

    ????

    ????

    ????

    ????

    文章結束給大家分享下程序員的一些笑話語錄: 那是習慣決定的,一直保持一個習慣是不好的!IE6的用戶不習慣多標簽,但是最終肯定還是得轉到多標簽的瀏覽器。歷史(軟件UI)的進步(改善)不是以個人意志(習慣)為轉移的!

    轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/21/3034392.html

    總結

    以上是生活随笔為你收集整理的集合遍历[设计模式总结] 9. 迭代器模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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