訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構可以保持不變。
訪問者模式適用於資料結構相對未定的系統。
它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化,訪問者模式使得增加新的操作變的很容易。就是增加乙個新的訪問者類。
訪問者模式將有關的行為集中到乙個訪問者物件中,而不是分散到乙個個的節點類中。當使用訪問者模式時,要將盡可能多的物件瀏覽邏輯放在訪問者類中,而不是放到它的子類中。訪問者模式可以跨過幾個類的等級結構訪問屬於不同的等級結構的成員類。
訪問者模式不需要改變基類,不依賴虛函式
class person;};
class man :public person
else
if (action == "戀愛")
}};class woman :public person
else
if (action == "戀愛")
}};int main132123()
cin.get();
return
0;}
1、符合單一職責原則:凡是適用訪問這模式的場景中,元素類中需要封裝在訪問者中的操作必定是與元素類本身關係不大且是易變的操作,使用訪問者模式一方面符合單一職責原則,另一方面,因為被封裝的操作通常來說都是易變的,所以當發生變化時,就可以在不改變元素類本身的前提下,實現對變化部分的擴充套件。
2.擴充套件性良好:元素類可以通過接受不同的訪問者來實現對不同操作的擴充套件。
訪問者模式
訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...
訪問者模式
行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...
訪問者模式
1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...