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

【設(shè)計(jì)模式】字節(jié)三面:請(qǐng)舉例闡釋訪問(wèn)者模式

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

今天我們要一起探討的主題是一種設(shè)計(jì)模式——訪問(wèn)者模式(Visitor Pattern)。我將從最基礎(chǔ)的概念、應(yīng)用場(chǎng)景,再到實(shí)例代碼的展示,全方位的為大家剖析訪問(wèn)者模式。而且,我保證,你即使是編程新手,也能理解并開(kāi)始應(yīng)用這個(gè)設(shè)計(jì)模式!

首先,讓我們先看一眼訪問(wèn)者模式的定義:

“訪問(wèn)者模式是一種將數(shù)據(jù)操作與數(shù)據(jù)結(jié)構(gòu)分離的設(shè)計(jì)模式,它允許在不改變數(shù)據(jù)結(jié)構(gòu)的情況下添加新的操作?!?/p>

【設(shè)計(jì)模式】字節(jié)三面:請(qǐng)舉例闡釋訪問(wèn)者模式,設(shè)計(jì)模式,設(shè)計(jì)模式,訪問(wèn)者模式,面試,組合模式

你可能會(huì)覺(jué)得這個(gè)定義含混不清,不過(guò)別擔(dān)心!接下來(lái)我們將通過(guò)一個(gè)有趣的例子來(lái)了解什么是訪問(wèn)者模式,以及它的作用。

樂(lè)園游客與樂(lè)園設(shè)施

想象一個(gè)場(chǎng)景:你是一位樂(lè)園的游客,樂(lè)園中有各種各樣的設(shè)施,像過(guò)山車(chē)、旋轉(zhuǎn)木馬、摩天輪等等。作為游客,你可以選擇你喜歡的設(shè)施進(jìn)行游玩。

在這個(gè)例子中,游客就像是“訪問(wèn)者”,他在樂(lè)園中游玩,享受各種設(shè)施;而樂(lè)園的設(shè)施則像是數(shù)據(jù)結(jié)構(gòu),它們存在著,等待游客的到來(lái)。游客游玩各種設(shè)施就像是操作數(shù)據(jù)結(jié)構(gòu)的過(guò)程。過(guò)山車(chē)、旋轉(zhuǎn)木馬、摩天輪等設(shè)施天生就有自己的結(jié)構(gòu),如何去玩它們(如乘坐、體驗(yàn)刺激等)并不會(huì)改變它們固有的結(jié)構(gòu),這就表現(xiàn)出訪問(wèn)者模式的特性—操作與結(jié)構(gòu)分離。

這個(gè)例子雖然簡(jiǎn)單,但是足以讓我們對(duì)訪問(wèn)者模式有個(gè)直觀的理解。在這個(gè)模式下,數(shù)據(jù)結(jié)構(gòu)開(kāi)放訪問(wèn)但是本身并不會(huì)進(jìn)行數(shù)據(jù)操作,所有的數(shù)據(jù)操作由訪問(wèn)者完成

Java例子

假設(shè)我們正在為這個(gè)樂(lè)園編寫(xiě)管理程序。樂(lè)園中的設(shè)施我們定義抽象基類(lèi)為Attract,并讓不同的設(shè)施如RollerCoaster(過(guò)山車(chē))、MerryGoRound(旋轉(zhuǎn)木馬)和FerrisWheel(摩天輪)都繼承它。每種設(shè)施我們都要定義一個(gè)accept方法,用于接收訪問(wèn)者。

public abstract class Attract {
    public abstract void accept(Visitor visitor);
}

public class RollerCoaster extends Attract {
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
}

public class MerryGoRound extends Attract {
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
}

public class FerrisWheel extends Attract {
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
}

然后,我們定義一個(gè)訪問(wèn)者接口Visitor,它有一系列的visit方法,分別與不同的設(shè)施對(duì)應(yīng)。

public interface Visitor {
    void visit(RollerCoaster rollerCoaster);
    void visit(MerryGoRound merryGoRound);
    void visit(FerrisWheel ferrisWheel);
}

最后,我們定義一個(gè)實(shí)際的訪問(wèn)者,游客Tourist。游客會(huì)根據(jù)他的興趣和體力情況,選擇不同的設(shè)施進(jìn)行游玩。

public class Tourist implements Visitor {
    @Override
    public void visit(RollerCoaster rollerCoaster) {
        // 游客去玩過(guò)山車(chē)
    }
    @Override
    public void visit(MerryGoRound merryGoRound) {
        // 游客去玩旋轉(zhuǎn)木馬
    }
    @Override
    public void visit(FerrisWheel ferrisWheel) {
        // 游客去玩摩天輪
    }
}

以上就是訪問(wèn)者模式在java中的一個(gè)應(yīng)用示例,希望這個(gè)例子有助于你理解和掌握訪問(wèn)者模式。至此,我們就對(duì)訪問(wèn)者模式有了非常清晰的理解。它是一種讓操作與數(shù)據(jù)結(jié)構(gòu)分離的設(shè)計(jì)模式,使我們能在不改變數(shù)據(jù)結(jié)構(gòu)的情況下添加新的操作。

記住,當(dāng)你在設(shè)計(jì)一個(gè)系統(tǒng)的時(shí)候,如果看到操作經(jīng)常變化但數(shù)據(jù)結(jié)構(gòu)相對(duì)穩(wěn)定,那么訪問(wèn)者模式可能就是一個(gè)非常好的設(shè)計(jì)選擇。

如果上面的內(nèi)容對(duì)你有幫助,請(qǐng)點(diǎn)贊收藏哦,我會(huì)分享更多的經(jīng)驗(yàn)~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-818925.html

到了這里,關(guān)于【設(shè)計(jì)模式】字節(jié)三面:請(qǐng)舉例闡釋訪問(wèn)者模式的文章就介紹完了。如果您還想了解更多內(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ì)模式之訪問(wèn)者模式(下)

    設(shè)計(jì)模式之訪問(wèn)者模式(下)

    3)訪問(wèn)者模式與組合模式聯(lián)用 1.概述 在訪問(wèn)者模式中,包含一個(gè)用于存儲(chǔ)元素對(duì)象集合的對(duì)象結(jié)構(gòu),可以使用迭代器來(lái)遍歷對(duì)象結(jié)構(gòu),同時(shí)具體元素之間可以存在整體與部分關(guān)系,有些元素作為容器對(duì)象,有些元素作為成員對(duì)象,可以使用組合模式來(lái)組織元素。 2.結(jié)構(gòu)圖

    2024年04月25日
    瀏覽(31)
  • 設(shè)計(jì)模式之訪問(wèn)者模式(上)

    設(shè)計(jì)模式之訪問(wèn)者模式(上)

    訪問(wèn)者模式 1)概述 1.概念 訪問(wèn)者模式包含 訪問(wèn)者 和 被訪問(wèn)元素 兩個(gè)主要組成部分。 處方單中的各種藥品信息就是 被訪問(wèn)的元素 ,而劃價(jià)人員和藥房工作人員就是 訪問(wèn)者 ,被訪問(wèn)的元素通常具有不同的類(lèi)型,且不同的訪問(wèn)者可以對(duì)它們進(jìn)行不同的訪問(wèn)操作。 被訪問(wèn)元素

    2024年04月25日
    瀏覽(56)
  • Java設(shè)計(jì)模式-訪問(wèn)者模式

    在軟件開(kāi)發(fā)領(lǐng)域中,設(shè)計(jì)模式是解決常見(jiàn)問(wèn)題的經(jīng)典方法。其中,訪問(wèn)者模式是一種強(qiáng)大且靈活的設(shè)計(jì)模式,用于處理對(duì)象結(jié)構(gòu)中的元素,并根據(jù)不同的訪問(wèn)者實(shí)現(xiàn)不同的操作。 訪問(wèn)者模式是一種行為型設(shè)計(jì)模式,它允許你在不改變?cè)仡?lèi)的前提下定義新的操作。該模式將算

    2024年02月06日
    瀏覽(21)
  • js設(shè)計(jì)模式:訪問(wèn)者模式

    js設(shè)計(jì)模式:訪問(wèn)者模式

    將操作方法封裝在一個(gè)訪問(wèn)者對(duì)象中,而不是封裝在每個(gè)被訪問(wèn)對(duì)象當(dāng)中。 訪問(wèn)者對(duì)象可以通過(guò)調(diào)用被訪問(wèn)者的接口,用來(lái)操作被訪問(wèn)者。

    2024年02月22日
    瀏覽(37)
  • 03-JAVA設(shè)計(jì)模式-訪問(wèn)者模式

    03-JAVA設(shè)計(jì)模式-訪問(wèn)者模式

    訪問(wèn)者模式(Visitor Pattern)是軟件設(shè)計(jì)模式中的一種行為模式,它用于將數(shù)據(jù)結(jié)構(gòu)中的元素與操作這些元素的操作解耦。這種模式使得可以在不修改數(shù)據(jù)結(jié)構(gòu)的情況下添加新的操作。 在訪問(wèn)者模式中,我們定義了兩個(gè)主要角色: 訪問(wèn)者(Visitor): 這個(gè)接口聲明了一個(gè)訪問(wèn)元

    2024年04月29日
    瀏覽(45)
  • 設(shè)計(jì)模式:訪問(wèn)者模式(C++實(shí)現(xiàn))

    訪問(wèn)者模式通過(guò)將對(duì)元素的操作與元素本身分離,使得可以在不修改元素類(lèi)的情況下定義新的操作。 運(yùn)行結(jié)果: 在上述代碼中,Visitor是訪問(wèn)者接口,定義了訪問(wèn)具體元素的方法。Element是元素接口,定義了接受訪問(wèn)者訪問(wèn)的方法。ConcreteElementA和ConcreteElementB是具體元素類(lèi),實(shí)

    2024年02月07日
    瀏覽(36)
  • 笨蛋學(xué)設(shè)計(jì)模式行為型模式-訪問(wèn)者模式【21】

    8.8.1概念 ? 訪問(wèn)者模式是一種將操作邏輯與對(duì)象結(jié)構(gòu)分離的方法,使得操作可以獨(dú)立變化,操作邏輯被封裝在獨(dú)立的訪問(wèn)者類(lèi)中,并在被訪問(wèn)的元素類(lèi)中提供接受訪問(wèn)者的方法,而不是直接嵌入到數(shù)據(jù)結(jié)構(gòu)中的對(duì)象中。 8.8.2場(chǎng)景 ? 我們可以將一個(gè)購(gòu)物商場(chǎng)中的商品類(lèi)作為元

    2024年01月23日
    瀏覽(23)
  • 設(shè)計(jì)模式之-訪問(wèn)者模式,快速掌握訪問(wèn)者模式,通俗易懂的講解訪問(wèn)者模式以及它的使用場(chǎng)景

    當(dāng)談到訪問(wèn)者模式時(shí),我們可以通過(guò)以下方式進(jìn)行詳細(xì)解釋?zhuān)?訪問(wèn)者模式是一種行為型設(shè)計(jì)模式,它允許你在不修改已有代碼的情況下,向現(xiàn)有對(duì)象結(jié)構(gòu)添加新的操作。該模式將操作(或方法)封裝在稱(chēng)為訪問(wèn)者的獨(dú)立對(duì)象中,使得可以在不修改元素類(lèi)的情況下,通過(guò)訪問(wèn)者

    2024年02月03日
    瀏覽(27)
  • 瑞_23種設(shè)計(jì)模式_訪問(wèn)者模式

    瑞_23種設(shè)計(jì)模式_訪問(wèn)者模式

    ?? 前言:本文章為瑞_系列專(zhuān)欄之《23種設(shè)計(jì)模式》的訪問(wèn)者模式篇。本文中的部分圖和概念等資料,來(lái)源于博主學(xué)習(xí)設(shè)計(jì)模式的相關(guān)網(wǎng)站《菜鳥(niǎo)教程 | 設(shè)計(jì)模式》和《黑馬程序員Java設(shè)計(jì)模式詳解》,特此注明。本文中涉及到的軟件設(shè)計(jì)模式的概念、背景、優(yōu)點(diǎn)、分類(lèi)、以及

    2024年04月15日
    瀏覽(21)
  • 軟件設(shè)計(jì)模式系列之二十五——訪問(wèn)者模式

    軟件設(shè)計(jì)模式系列之二十五——訪問(wèn)者模式

    訪問(wèn)者模式(Visitor Pattern)是一種強(qiáng)大的行為型設(shè)計(jì)模式,它允許你在不改變被訪問(wèn)對(duì)象的類(lèi)的前提下,定義新的操作和行為。本文將詳細(xì)介紹訪問(wèn)者模式,包括其定義、舉例說(shuō)明、結(jié)構(gòu)、實(shí)現(xiàn)步驟、Java代碼實(shí)現(xiàn)、典型應(yīng)用場(chǎng)景、優(yōu)缺點(diǎn)、類(lèi)似模式以及最后的小結(jié)。 訪問(wèn)者

    2024年02月08日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包