迭代器模式(Iterator)

迭代器模式

一. 迭代器模式

1.1 定義

  • 提供一種方法順序訪問一個集合對象中的各種元素,而又不暴露該對象的內部表示.

1.2 角色

  • 抽象迭代器接口(Iterator).
  • 具體迭代器(ConcreteIterator).
  • 抽象聚合接口(Aggregate).
  • 具體聚合(ConcreteAggregate).

二. 具體實現

1.1 創建抽象迭代器接口

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

1.2 創建抽象聚合接口

    public interface Aggregate {Iterator iterator();}

1.3 創建具體聚合及具體迭代器

    public class ConcreteAggregate implements Aggregate {@Overridepublic Iterator iterator() {return new ConcreteIterator();}private class ConcreteIterator implements Iterator {@Overridepublic Object next() {System.out.println("ConcreteIterator next ...");return null;}@Overridepublic boolean hasNext() {System.out.println("ConcreteIterator hasNext ....");return true;}}}

1.4 調用

    public static void main(String[] args) {Aggregate aggregate = new ConcreteAggregate();Iterator iterator = aggregate.iterator();if(iterator.hasNext()){iterator.next();}}

1.5 輸出

ConcreteIterator hasNext ....ConcreteIterator next ...

三. 優缺點

3.1 優點

  • 簡化了聚合類的接口.

3.2 缺點

  • 增加新的聚合類需要增加新的具體迭代器.

四. 源碼

    https://github.com/Seasons20/DisignPattern.git

END

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538526.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538526.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Angular啟動過程介紹

1、啟動時加載了哪個頁面?2、啟動時加載了哪些腳本?3、這些腳本做了什么事?打開Angular的命令行文件.angular-cli.json。apps節點下面。首先加載 index.html 頁面。此時瀏覽器顯示index.html的內容。再加載main.ts腳本"apps": [{..…

python解壓打開文件過多_在python中使用zipfile壓縮文件時層級很多,有很多層目錄...

如下圖本來只壓縮一個文件結果這個文件所在的路徑全都被壓縮進去啦下面是解決方法yadirD:/databak/zipfilepathD:/zipfile.zipfilelists os.listdir(yadi)if filelists None or len(filelists) print (">>>>>>待壓縮的文件目錄:" ya…

易語言python1.1模塊_易語言之編寫模塊與引入模塊

本人并不精通易語言,只是對其進行一定了解后做一個簡單的總結。直接新建一個易語言模塊,然后添加子程序即可。子程序當然可以隨意命名,實際上,易語言的子程序就和c語言的函數,java中的方法一樣(實際上,java…

spring boot開發筆記——mybatis

概述 mybatis框架的優點,就不用多說了,今天這邊干貨主要講mybatis的逆向工程,以及springboot的集成技巧,和分頁的使用 因為在日常的開發中,當碰到特殊需求之類會手動寫一下sql語句,大部分的時候完全可以用m…

Angular項目目錄介紹

通過 ng new 項目名生成的項目 一級目錄 Angular cli 工具生成的目錄文件名不要隨意修改,要不然會影響工具的使用。e2e:端到端的測試目錄,用來做自動測試的。node_modules:Angular第三方包。src:應用源代碼目錄&#…

jvm內存模型_四種視角看JVM內存模型

1.JVM運行視角程序計數器Java虛擬機棧本地方法棧Java堆方法區1 .程序計數器程序計數器是一塊較小的內存空間,它可以看作是當前線程所執行的行號指示器。這個計數器記錄的是正在執行的虛擬機字節碼指令的地址。此內存區域是唯一一個在JAVA虛擬機規范中沒有規定任何Ou…

linux mysql失敗_linux下登陸mysql失敗

標簽:一.提示由于沒有密碼,拒絕登陸ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘ (using password: NO)1.關閉mysql# service mysqld stop2.屏蔽權限# mysqld_safe --skip-grant-table屏幕出現: Starting demo from ..…

Tomcat服務腳本

為什么80%的碼農都做不了架構師?>>> #!/bin/bash ### BEGIN INIT INFO # Provides: tomcat # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # S…

Angular開發準備

cmd,進入項目文件下1、安裝jquerynpm install jquery --save。--save 安裝的同時,將信息寫入package.json中2、安裝bootstrapnpm installbootstrap--save。3、在.angular-cli.json中添加 jquery和bootstrap的引用在styles節點和scripts節點下加入。&quo…

python桌面開發吐血_想用java寫個桌面小demo,就布局都差點寫吐血了,學藝不精...

demo簡略需求項目背景很多文件重復存放,除了管理混亂,還會對患有強迫癥用戶的身心造成10000點的傷害...其實就是360云盤當時上傳了有上傳,造成很多重復的圖片視頻,前陣子360個人云盤“倒閉”,電腦日夜兼程,…

oracle 取當前日期時間的前一天前一小時前一分鐘前一秒

原文鏈接:http://wentao365.iteye.com/blog/779492 點擊閱讀原文 --------------------------------------------------------------------------- SELECT 當前時間 TITLE, TO_CHAR(SYSDATE, yyyy-mm-dd hh24:mi:ss) TIME FROM DUAL --當前時間 UNION ALL S…

mysql8事務級別_Mysql幾種事務隔離級別

前言:之前對mysql的基礎知識通過了幾篇博客進行了一個詳解,包括從數據庫系統的原理以及最基本的操作使用,此篇博客將主要對mysql的事務級別進行實戰分析1.什么是事務?事務是應用程序中一系列嚴密的操作,所有操作必須成…

控制臺應用和空項目有什么區別_互聯網小程序的應用以及APP的應用有什么區別及發展...

隨時移動互聯網進入的千家萬戶,互聯網的手機應用程序也漸漸的在市場上流行起來了。今天主要跟大家談一下互聯網小程序的應用以及APP的應用有什么區別以及未來的發展趨。未來會流行什么手機應用或者APP應用,我帶大家都為了解一下。下邊先來了解一下小程序…

day19_java基礎加強_動態代理+注解+類加載器

一、動態代理 1.1、代理模式 什么是代理模式及其作用? Proxy Pattern(即:代理模式),23種常用的面向對象軟件的設計模式之一。? ? ? ? 代理模式的定義:為其他對象提供一種代理以控制對這個對象的訪問。?…

mysql壓力寫入測試_mysql壓力測試工具

相關推薦:測試工具測試工具 測試管理工具 Quality Center 基于WEB的測試管理工具 Test Director 功能測試工具 QuickTest Professional 性能測試工具 LoadRunner 哪位仁兄有相關…

python中隊列的應用用場景_消息隊列應用場景

原文http://blog.csdn.net/konglongaa/article/details/52208273一、消息隊列概述消息隊列中間件是分布式系統中重要的組件,主要解決應用解耦,異步消息,流量削鋒等問題,實現高性能,高可用,可伸縮和最終一致…

oracle獲取一段時間內所有的小時、天、月

原文鏈接:http://blog.csdn.net/ld422586546/article/details/9626921/ 點擊閱讀原文 ---------------------------------------------------------------------- 獲取一段時間內所有的小時 SELECT to_date(2013-07-01 12, yyyy-mm-dd hh24) (ROWNUM - 1) / 24 s…

eclipse快捷鍵、智能提示

1、Alt / 調出智能提示功能,即使在XML文件中; 2、 轉載于:https://www.cnblogs.com/JAVA-STUDYER/p/9143862.html

python下載網頁歌詞_python3個人學習筆記-批量下載分析歌詞2

我發現之前自己真是太愚蠢了沒有搞清楚正則表達的各種用法。不同詞語的篩選根本不用像re.sub(另一個想替換的內容,另一個替換后的內容,re.sub(想要替換的內容,替換后的內容,x))這樣傻了吧唧地篩一層又一層……(受linux的pipe荼毒太深)正則表達中不同字符的or其實大家都知道是[a…

使用循環鏈表實現一個通訊錄的管理程序_【LeetCode鏈表題型總結】

點擊上方藍字,關注公眾號鏈表概念的講解鏈表是什么鏈表是一種線性數據結構,每個節點都存有數據,通過指針將各個節點鏈接在一起。鏈表的性質一致性: 每個節點有相同的數據結構,相同的數據大小,內存中占據相同的大小&…