28 訪問者模式

2021-09-09 08:37:00 字數 1359 閱讀 5902

表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的前提下定義作用於這些元素的新操作。

適用於資料結構相對穩定,又有易於變化的演算法的系統(就是element穩定,visitor經常變化)

由於把資料結構和資料結構上的操作進行了解耦,也就是把處理從資料結構中分離出來,使得增加新的操作很容易,因為增加新的操作就意味著增加乙個新的訪問者。

源於優點,使得增加資料結構變得困難了。

因為資料結構不變化的情況比較難找,所以大多數時候並不需要訪問者模式,但是一旦需要訪問者模式,那就是真的用它了。

//相當於visitor訪問者

public abstract class action

success

public class success extends action 

@override

public void getwomanconclusion(woman concreteelement)

}

fail

public class fail extends action 

@override

public void getwomanconclusion(woman concreteelement)

}

person

//相當於element

public abstract class person

man

public class man extends person 

}

woman

public class woman extends person 

}

objectstructure

//物件結構

public class objectstructure

public void detach(person element)

public void display(action visitor) }}

參考

第28章訪問者模式

一 概念 二 訪問者模式的優點和缺點 三 c 實現 visitor.h pragma once include include include using namespace std class action 類的前向宣告 人的抽象類 class person 狀態的抽象類 class action...

024 第28章 訪問者模式

簡述 訪問者模式 表示乙個作用於某物件結構中各個元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者模式包括 抽象訪問者類 具體訪問者類 物件列舉結構類 抽象元素類 具體元素類。抽象訪問者類 為該物件結構中的每個具體元素類物件宣告乙個visit操作。具體訪問者類 實現每...

訪問者模式

訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...