程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 無廢話C#設計模式之二十一:Visitor(3)

無廢話C#設計模式之二十一:Visitor(3)

編輯:關於C語言

何時采用

訪問者模式適用下面的情況:

l 對象結構中包含很多類型,這些類型沒有統一的接口,而我們又希望使得對象的操作進行統一。

l 希望為對象結構中的類型新增操作,並且不希望改變原有的代碼。

l 對象結構中的一些類型之間發生耦合,而它們的實現又經常會發生變動。

l 針對結構中同一層次的不同類型甚至是不同層次的類型進行迭代。

從這裡可以看出,訪問者模式的主要適用還是針對對象結構(往往有層次關系),並且需要在設計的時候實現為各類型預留接受訪問者的接口。

實現要點

l 每個元素都需要設置Accept()方法來接受訪問者。

l 兩次多態分發,確定訪問者以及訪問者中的方法。

l 如果一個結構層次中有多個類型的元素,那麼可以通過一個ObjectStructure的角色進行封裝。

注意事項

l 訪問者模式一個主要的缺點就是難以擴展對象結構,其實,這點是可以通過一些變化進行化解的。

l 訪問者模式第二個缺點是需要過多暴露對象的內部元素,否則訪問者難以對對象進行實質性的操作。

l 第三個缺點是需要實現考慮到這樣的需求並且提前設置接受訪問者的方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved