設計模式學習總結(21) 訪問者模式

本系列主要記錄設計模式的意圖是什麼,它要解決一個什麼問題,什麼時候可以使用它;它是如何解決的,掌握它的結構圖,記住它的關鍵代碼;能夠想到至少兩個它的應用實例,一個生活中的,一個軟件中的;這個模式的優缺點是什麼,其有哪些使用場景,在使用時要注意什麼。

尊重作者,轉載請註明曄陽的Bloghttp://blog.csdn.net/hacke2


21.訪問者模式

意圖:主要講數據結構與數據操作分離
主要解決:穩定的數據結構和易變的操作耦合問題
什麼時候使用:與類本不相關的,爲了避免這個污染 ,使用訪問者模式將這些封裝到訪問者模式
如何解決 :在被訪問的類裏面加一個對外提供接待訪問者的接口
結構圖


關鍵代碼:在數據基礎類裏面有一個方法接受訪問者,將自身引用傳入訪問者
應用實例:你在朋友家做客,你是訪問者,朋友接受你的訪問,你通過朋友的描述,然後對朋友的 描述做出一個判斷,這就是訪問者模式
優點:1、符合單一職責原則。 2、優秀的擴展性。3、靈活性  
缺點:1、具體元素對訪問者公佈細節,違反了迪米特原則2、具體元素變更比較困難 3、違反了依賴倒置原則,依賴了具體類,沒有依賴抽象
使用場景:1、對象結構中對象對應的類很少改變,但經常需要在此對象結構上定義新的操作。
2、需要對一個對象結構中的對象進行很多不同的並且不相關的操作,而需要避免讓這些操作“污染”這些對象的類,也不希望在增加新操作時修改這些類
注意事項:訪問者可以對功能進行統一,可以做報表、UI、攔截器與過濾器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章