摘要:迭代器模式一迭代器模式定義提供一種方法順序訪(fǎng)問(wèn)一個(gè)集合對(duì)象中的各種元素,而又不暴露該對(duì)象的內(nèi)部表示角色抽象迭代器接口具體迭代器抽象聚合接口具體聚合二具體實(shí)現(xiàn)創(chuàng)建抽象迭代器接口創(chuàng)建抽象聚合接口創(chuàng)建具體聚合及具體迭代器調(diào)用輸出三優(yōu)缺點(diǎn)優(yōu)點(diǎn)簡(jiǎn)化了
迭代器模式
一. 迭代器模式 1.1 定義提供一種方法順序訪(fǎng)問(wèn)一個(gè)集合對(duì)象中的各種元素,而又不暴露該對(duì)象的內(nèi)部表示.
1.2 角色抽象迭代器接口(Iterator).
具體迭代器(ConcreteIterator).
抽象聚合接口(Aggregate).
具體聚合(ConcreteAggregate).
二. 具體實(shí)現(xiàn) 1.1 創(chuàng)建抽象迭代器接口public interface Iterator { Object next(); boolean hasNext(); }1.2 創(chuàng)建抽象聚合接口
public interface Aggregate { Iterator iterator(); }1.3 創(chuàng)建具體聚合及具體迭代器
public class ConcreteAggregate implements Aggregate { @Override public Iterator iterator() { return new ConcreteIterator(); } private class ConcreteIterator implements Iterator { @Override public Object next() { System.out.println("ConcreteIterator next ..."); return null; } @Override public boolean hasNext() { System.out.println("ConcreteIterator hasNext ...."); return true; } } }1.4 調(diào)用
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 ...三. 優(yōu)缺點(diǎn) 3.1 優(yōu)點(diǎn)
簡(jiǎn)化了聚合類(lèi)的接口.
3.2 缺點(diǎn)增加新的聚合類(lèi)需要增加新的具體迭代器.
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69643.html
摘要:迭代器模式屬于行為型模式的一種,提供一種方法訪(fǎng)問(wèn)一個(gè)容器中各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部細(xì)節(jié)。迭代器模式把在元素之間游走的責(zé)任交給迭代器,而不是聚合對(duì)象。 迭代器模式(Iterator Pattern)屬于行為型模式的一種,提供一種方法訪(fǎng)問(wèn)一個(gè)容器中各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部細(xì)節(jié)。 概述 迭代器模式聽(tīng)起來(lái)可能感覺(jué)很陌生,但是實(shí)際上,迭代器模式是所有設(shè)計(jì)模式中最簡(jiǎn)單也是...
摘要:文章內(nèi)容分兩部分前半部分為迭代器模式概念后半部分為中迭代器上半部分開(kāi)始迭代器模式提供一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部表示。下半部分開(kāi)始的迭代器迭代器等同于遍歷器。執(zhí)行該函數(shù),會(huì)返回一個(gè)遍歷器對(duì)象。 showImg(https://segmentfault.com/img/bVbuyaZ?w=800&h=600); 文章內(nèi)容分兩部分: 前半部分為 迭...
摘要:文章系列設(shè)計(jì)模式單例模式設(shè)計(jì)模式策略模式設(shè)計(jì)模式代理模式概念迭代器模式是指提供一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部表示。 前言 本系列文章主要根據(jù)《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》整理而來(lái),其中會(huì)加入了一些自己的思考。希望對(duì)大家有所幫助。 文章系列 js設(shè)計(jì)模式--單例模式 js設(shè)計(jì)模式--策略模式 js設(shè)計(jì)模式--代理模式 概念 迭代器模式是指...
摘要:迭代器模式迭代器模式是指提供一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素,而不需要暴露該對(duì)象的內(nèi)部表示。可迭代協(xié)議和迭代器協(xié)議。生成器函數(shù)是可以作為迭代器工廠(chǎng)的函數(shù),當(dāng)它被執(zhí)行時(shí)會(huì)返回一個(gè)新的對(duì)象,該對(duì)象符合可迭代協(xié)議和迭代器協(xié)議。 迭代器模式 迭代器模式是指提供一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素,而不需要暴露該對(duì)象的內(nèi)部表示。 迭代器分為內(nèi)部迭代器和外部迭代器。內(nèi)部迭代器只需一次初...
摘要:概念迭代器模式,又叫做游標(biāo)模式。另外,當(dāng)需要對(duì)聚集有多種方式遍歷時(shí),可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結(jié)構(gòu)提供如開(kāi)始下一個(gè)是否結(jié)束當(dāng)前哪一項(xiàng)等統(tǒng)一的接口。 概念 迭代器模式(Iterator),又叫做游標(biāo)(Cursor)模式。提供一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中的各種元素,而又不暴露該對(duì)象的內(nèi)部表示。 當(dāng)你需要訪(fǎng)問(wèn)一個(gè)聚合對(duì)象,而且不管這些對(duì)象是什么都需要遍歷的時(shí)候,就...
閱讀 2577·2021-10-25 09:45
閱讀 1239·2021-10-14 09:43
閱讀 2297·2021-09-22 15:23
閱讀 1519·2021-09-22 14:58
閱讀 1934·2019-08-30 15:54
閱讀 3539·2019-08-30 13:00
閱讀 1354·2019-08-29 18:44
閱讀 1571·2019-08-29 16:59