国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式行為型——迭代器模式

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式行為型——迭代器模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

迭代器模式的定義

迭代器模式的實(shí)現(xiàn)

迭代器模式角色

迭代器模式類圖

迭代器模式代碼實(shí)現(xiàn)

迭代器模式的特點(diǎn)

優(yōu)點(diǎn)

缺點(diǎn)

使用場(chǎng)景

注意事項(xiàng)


迭代器模式的定義

????????迭代器模式(Iterator Pattern)屬于行為型模式,其提供一種方法順序訪問(wèn)一個(gè)聚合對(duì)象中的各種元素,而又不暴露該對(duì)象的內(nèi)部表示,即不需要知道集合對(duì)象的底層表示。編程環(huán)境中非常常用的設(shè)計(jì)模式。

迭代器模式的實(shí)現(xiàn)

迭代器模式角色

  1. 抽象迭代器角色(Iterator):定義遍歷元素所需要的方法,通常包含next()、hasNext()、remove()等。
  2. 具體迭代器角色(Concrete Iterator):實(shí)現(xiàn)迭代器接口中定義的方法,完成對(duì)聚合對(duì)象的遍歷,記錄遍歷的當(dāng)前位置。
  3. 容器角色(Aggregate):一般是接口,定義存儲(chǔ)、添加、刪除聚合元素以及創(chuàng)建迭代器對(duì)象的接口。
  4. 具體容器角色(ConcreteAggregate):抽象容器的具體實(shí)現(xiàn)類,實(shí)現(xiàn)抽象容器,創(chuàng)建出容器迭代器的對(duì)象。

迭代器模式類圖

設(shè)計(jì)模式行為型——迭代器模式,設(shè)計(jì)模式,迭代器模式

迭代器模式代碼實(shí)現(xiàn)

抽象迭代器角色

package com.common.demo.pattern.iterator;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 抽象迭代器角色 抽象迭代器
 * @date 2023/08/03 22:38:43
 */
public interface Iterator {
    //判斷是否還有下一個(gè)元素
    boolean hasNext();
    //獲取第一個(gè)元素
    Object first();
    //獲取下一個(gè)元素
    Object next();
}

具體迭代器角色

package com.common.demo.pattern.iterator;

import java.util.List;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 具體迭代器角色 對(duì)象迭代器
 * @date 2023/08/03 22:39:30
 */
public class ObjectIterator implements Iterator{
    private List<Object> list;
    //記錄遍歷時(shí)的位置
    private int position = 0;

    public ObjectIterator(List<Object> list) {
        this.list = list;
    }

    @Override
    public boolean hasNext() {
        return position<list.size();
    }

    @Override
    public Object first() {
        return list.get(0);
    }

    @Override
    public Object next() {
        return list.get(position++);
    }
}

抽象容器角色

package com.common.demo.pattern.iterator;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 抽象聚合/容器角色
 * @date 2023/08/03 22:43:07
 */
public interface Aggregate {
    //添加對(duì)象
    void addObject(Object object);
    //移除對(duì)象
    void removeObject(Object object);
    //獲取迭代器
    Iterator getIterator();
}

具體容器角色

package com.common.demo.pattern.iterator;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 具體聚合/容器角色 對(duì)象聚合
 * @date 2023/08/03 22:43:31
 */
public class ObjectAggregate implements Aggregate{

    private List<Object> list = new ArrayList<>();

    @Override
    public void addObject(Object object) {
        list.add(object);
    }

    @Override
    public void removeObject(Object object) {
        list.remove(object);
    }

    @Override
    public Iterator getIterator() {
        return new ObjectIterator(list);
    }
}

測(cè)試類

package com.common.demo.pattern.iterator;

/**
 * @author Evan Walker 昂焱數(shù)據(jù): https://www.ayshuju.com
 * @version 1.0
 * @desc 測(cè)試類
 * @date 2023/08/03 22:44:47
 */
public class Test {
    public static void main(String[] args) {
        //創(chuàng)建聚合對(duì)象
        ObjectAggregate objectAggregate = new ObjectAggregate();
        //在聚合對(duì)象中填充數(shù)據(jù)
        objectAggregate.addObject("我是好人一號(hào)");
        objectAggregate.addObject("我是好人二號(hào)");
        objectAggregate.addObject("我是好人三號(hào)");
        //獲取迭代器
        Iterator iterator = objectAggregate.getIterator();
        //通過(guò)迭代器迭代數(shù)據(jù)
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

測(cè)試截圖

設(shè)計(jì)模式行為型——迭代器模式,設(shè)計(jì)模式,迭代器模式

迭代器模式的特點(diǎn)

優(yōu)點(diǎn)

  1. 簡(jiǎn)化集合遍歷代碼:迭代器模式可以封裝集合對(duì)象的遍歷過(guò)程,使得客戶端代碼更簡(jiǎn)潔清晰,無(wú)需關(guān)心集合對(duì)象的內(nèi)部表示和遍歷方式。
  2. 支持多種遍歷方式:通過(guò)定義不同的迭代器類,可以實(shí)現(xiàn)對(duì)同一個(gè)聚合對(duì)象的不同遍歷方式,靈活地應(yīng)對(duì)不同的需求。
  3. 封裝聚合對(duì)象的內(nèi)部表示:迭代器將遍歷操作從聚合對(duì)象中抽離出來(lái),使得聚合對(duì)象可以更好地封裝自己的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。

缺點(diǎn)

  1. 增加了系統(tǒng)復(fù)雜性:引入迭代器模式將會(huì)增加額外的類和接口,增加了系統(tǒng)的復(fù)雜性和理解難度。
  2. 需要額外的內(nèi)存開銷:每個(gè)迭代器對(duì)象都需要占用一定的內(nèi)存空間,當(dāng)?shù)鲾?shù)量較多時(shí),會(huì)增加系統(tǒng)的內(nèi)存開銷。

使用場(chǎng)景

  1. 需要遍歷聚合對(duì)象的情況:當(dāng)需要遍歷訪問(wèn)一個(gè)聚合對(duì)象的元素,并且對(duì)外部隱藏其內(nèi)部表示時(shí),可以考慮使用迭代器模式。
  2. 需要支持多種遍歷方式的情況:當(dāng)同一聚合對(duì)象需要支持多種不同的遍歷方式時(shí),可以使用迭代器模式來(lái)實(shí)現(xiàn)。

注意事項(xiàng)

  1. 迭代器模式一般包括迭代器接口和具體迭代器實(shí)現(xiàn)類,以及聚合對(duì)象和具體聚合對(duì)象類。在使用迭代器模式時(shí),需要注意它們之間的關(guān)系和協(xié)作。
  2. 聚合對(duì)象需要提供創(chuàng)建迭代器對(duì)象的接口,以便客戶端能夠獲取迭代器對(duì)象進(jìn)行遍歷操作。
  3. 注意迭代器對(duì)象的生命周期管理,特別是在多線程環(huán)境下,需要注意迭代器的線程安全性和一致性。
  4. 考慮迭代器模式的性能影響,尤其是對(duì)于大規(guī)模數(shù)據(jù)集合的遍歷操作,需要合理評(píng)估迭代器模式的適用性和性能開銷。

更多消息資訊,請(qǐng)?jiān)L問(wèn)昂焱數(shù)據(jù)(https://www.ayshuju.com)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-628856.html

到了這里,關(guān)于設(shè)計(jì)模式行為型——迭代器模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式-迭代器模式

    設(shè)計(jì)模式-迭代器模式

    ??迭代器模式(Iterator Design Pattern),也叫作游標(biāo)模式(Cursor Design Pattern)。它用來(lái)遍歷集合對(duì)象。這里說(shuō)的“集合對(duì)象”也可以叫“容器”“聚合對(duì)象”,實(shí)際上就是包含一組對(duì)象的對(duì)象,比如數(shù)組、鏈表、樹、圖、跳表。迭代器模式將集合對(duì)象的遍歷操作從集合類中拆

    2024年02月05日
    瀏覽(32)
  • 設(shè)計(jì)模式——迭代器模式

    設(shè)計(jì)模式——迭代器模式

    它提供一種方法訪問(wèn)一個(gè)容器對(duì)象中各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部細(xì)節(jié)。 迭代器是為容器服務(wù)的,能容納元素的對(duì)象可以稱為容器,例:List、Set、Map 迭代器模式(Iterator Pattern)已經(jīng)是沒(méi)落的設(shè)計(jì)模式,常用的容器基本都有成熟穩(wěn)定的實(shí)現(xiàn),基本不會(huì)再去單獨(dú)寫一

    2024年02月13日
    瀏覽(21)
  • 設(shè)計(jì)模式:迭代器模式

    迭代器模式的示例可以涵蓋各種數(shù)據(jù)結(jié)構(gòu)的遍歷,包括數(shù)組、列表、樹、圖等。下面是一些不同場(chǎng)景下迭代器模式的示例及其代碼實(shí)現(xiàn)。 示例 1: 數(shù)組遍歷 使用迭代器模式遍歷數(shù)組。 示例 2: 二叉樹的深度優(yōu)先遍歷 二叉樹的深度優(yōu)先遍歷(使用棧實(shí)現(xiàn))。 示例 3: 分頁(yè)遍歷 在

    2024年04月11日
    瀏覽(20)
  • 設(shè)計(jì)模式 ~ 迭代器模式

    迭代器是一種設(shè)計(jì)模式,提供了一種順序訪問(wèn)集合或容器中元素的方法,無(wú)需暴露集合的內(nèi)部結(jié)構(gòu),for 循環(huán)并不是迭代器模式 ,forEach 是最簡(jiǎn)易的迭代器。 以下函數(shù)實(shí)現(xiàn)了 next 方法,調(diào)用該方法返回集合中的下一個(gè)元素 value 表示當(dāng)前迭代到的元素值 done 表示迭代是否已經(jīng)結(jié)

    2024年02月16日
    瀏覽(19)
  • 設(shè)計(jì)模式行為模式-命令模式

    設(shè)計(jì)模式行為模式-命令模式

    命令模式(Command Pattern)是一種行為型設(shè)計(jì)模式,用于將請(qǐng)求封裝為對(duì)象,從而使你可以使用不同的請(qǐng)求、隊(duì)列或者日志請(qǐng)求來(lái)參數(shù)化其他對(duì)象。這樣可以實(shí)現(xiàn)請(qǐng)求的參數(shù)化操作、隊(duì)列化和日志化,且能夠支持撤銷操作。 命令模式由以下幾個(gè)核心組件組成: 命令(Command)

    2024年02月10日
    瀏覽(29)
  • 設(shè)計(jì)模式淺析(十) ·設(shè)計(jì)模式之迭代器&組合模式

    設(shè)計(jì)模式淺析(十) ·設(shè)計(jì)模式之迭代器&組合模式

    日常叨逼叨 java設(shè)計(jì)模式淺析,如果覺(jué)得對(duì)你有幫助,記得一鍵三連,謝謝各位觀眾老爺???? 案例 有兩家門店,門店A呢只提供早餐,門店B呢只提供午餐,有一天這兩家店鋪想要進(jìn)行合并,一起做大做強(qiáng),再創(chuàng)輝煌。 合并后呢,對(duì)于菜單的定制存在了一定的問(wèn)題: 門店A的

    2024年04月11日
    瀏覽(26)
  • 設(shè)計(jì)模式——迭代器模式15

    設(shè)計(jì)模式——迭代器模式15

    迭代器模式提供一種方法訪問(wèn)一個(gè)容器對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部細(xì)節(jié)。 設(shè)計(jì)模式,一定要敲代碼理解 迭代器模式將數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)遍歷的職責(zé)進(jìn)行分離。但針對(duì)不同結(jié)構(gòu)的迭代對(duì)象,迭代方式需進(jìn)行添加。 代碼下載

    2024年04月15日
    瀏覽(19)
  • [設(shè)計(jì)模式]行為型模式-策略模式

    策略模式定義了一系列算法,并將每個(gè)算法封裝起來(lái),使它們可以互相替換,且算法的變換不會(huì)影響使用算法的客戶。 在項(xiàng)目開發(fā)中,我們經(jīng)常要根據(jù)不同的場(chǎng)景,采取不同的措施,也就是不同的策略。假設(shè)我們需要對(duì)a、b這兩個(gè)整數(shù)進(jìn)行計(jì)算,根據(jù)條件的不同,需要執(zhí)行不

    2024年02月19日
    瀏覽(32)
  • Java 設(shè)計(jì)模式——迭代器模式

    Java 設(shè)計(jì)模式——迭代器模式

    迭代器模式 (Iterator Pattern) 是一種行為型設(shè)計(jì)模式, 它提供一種順序訪問(wèn)聚合對(duì)象(如列表、集合等)中的元素,而無(wú)需暴露聚合對(duì)象的內(nèi)部表示 。迭代器模式將遍歷邏輯封裝在一個(gè) 迭代器對(duì)象 中,使得我們可以使用統(tǒng)一的方式遍歷不同類型的聚合對(duì)象,同時(shí)也可以簡(jiǎn)化客

    2024年02月16日
    瀏覽(18)
  • 設(shè)計(jì)模式行為型——命令模式

    設(shè)計(jì)模式行為型——命令模式

    目錄 命令模式的定義? ? ? 命令模式的實(shí)現(xiàn) 命令模式角色 命令模式類圖 命令模式舉例 命令模式代碼實(shí)現(xiàn) 命令模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 注意事項(xiàng) ????????命令模式(Command Pattern)是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,它屬于行為型模式。是對(duì)命令的封裝,每一個(gè)命令都是

    2024年02月14日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包