最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

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

2022-07-24 16:31 作者:做架構(gòu)師不做框架師  | 我要投稿


什么是訪問者模式

訪問者模式(Visitor Pattern),首先我們擁有一個(gè)由許多對象構(gòu)成的對象結(jié)構(gòu),這些對象的類都擁有一個(gè)accept方法用來接受訪問者對象;訪問者對象是一個(gè)接口,他擁有一個(gè)visit方法,這個(gè)方法對訪問到的對象結(jié)構(gòu)中不同類型的元素作出不同的反應(yīng);在對象結(jié)構(gòu)的一次訪問過程中,我們遍歷整個(gè)對象結(jié)構(gòu),對每一個(gè)元素都實(shí)施accept方法,在每個(gè)元素的accept方法中回調(diào)訪問者的visit方法,從而使訪問者得以處理對象結(jié)構(gòu)的每一個(gè)元素。我們可以針對對象結(jié)構(gòu)設(shè)計(jì)不同的實(shí)在的訪問者類來完成不同的操作。

一句話歸納

將算法與對象結(jié)構(gòu)分離

示例

在十幾年前很難想象到,電腦成為了我們生活中無法或缺的一部分,工作用電腦,吃喝玩樂都在用電腦,電腦簡直成為了我們生活中的一部分,還有一些大膽的人想要把電腦植入到人的體內(nèi),成為新一代“人類”,不過一般電腦由以下主要幾個(gè)部分組成,顯示器、鍵盤、鼠標(biāo)、主機(jī)……等等,顯示器可以提供我們視覺上的享受,鍵盤可以輸入你任何想寫的字,鼠標(biāo)可以提供比鍵盤更靈活的操作……

代碼如下:

適用性

以下場景我建議你考慮使用

  • 一個(gè)對象結(jié)構(gòu)包含很多類對象,他們有不同的接口,而你想對這些對象實(shí)施一些依賴于其具體類的操作,也就是說用迭代器模式已經(jīng)不能勝任的場景。

  • 需要對一個(gè)對象結(jié)構(gòu)中的對象進(jìn)行很多不同的并且不相關(guān)的操作,而需要避免讓這些操作“污染”這些對象的類,使用訪問者模式將這些封裝到類中。

局限性

以下場景我建議你謹(jǐn)慎使用

  • 增加新的元素類很困難。在訪問者模式中,每增加一個(gè)新的元素類,都要在每一個(gè)具體訪問者類中增加相應(yīng)的具體操作,這違背了“開閉原則”。

  • 破壞封裝。訪問者模式中具體元素對訪問者公布細(xì)節(jié),這破壞了對象的封裝性。

  • 違反了依賴倒置原則。訪問者模式依賴了具體類,而沒有依賴抽象類。

END

好兄弟可以點(diǎn)贊并關(guān)注我的公眾號(hào)“javaAnswer”,全部都是干貨。


設(shè)計(jì)模式:訪問者模式的評論 (共 條)

分享到微博請遵守國家法律
白银市| 综艺| 白河县| 呈贡县| 麦盖提县| 尉氏县| 屯留县| 广平县| 石楼县| 湖口县| 宜良县| 齐河县| 沾益县| 崇州市| 晴隆县| 平利县| 铁岭县| 尼木县| 赫章县| 佛教| 武乡县| 灵台县| 惠水县| 库尔勒市| 衡阳市| 安徽省| 定边县| 汉沽区| 边坝县| 都兰县| 始兴县| 南通市| 平陆县| 北安市| 锡林浩特市| 阳春市| 土默特左旗| 姜堰市| 哈巴河县| 左云县| 金门县|