五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ì)模式:訪問者模式的評論 (共 條)

分享到微博請遵守國家法律
崇礼县| 万源市| 利川市| 云阳县| 宣化县| 景谷| 扶风县| 喜德县| 崇左市| 固始县| 景德镇市| 青州市| 双城市| 灵寿县| 会泽县| 郑州市| 辉县市| 陵川县| 靖边县| 精河县| 荣昌县| 鸡西市| 绥德县| 马边| 德兴市| 阿坝| 浮梁县| 德令哈市| 莒南县| 泾川县| 肥西县| 延长县| 甘南县| 大渡口区| 建平县| 永川市| 新邵县| 鹤庆县| 乌兰浩特市| 河曲县| 全南县|