基本概念
訪問者模式(Visitor Pattern)是一種行為型設計模式,它允許你在不改變被訪問類的前提下,定義對其進行操作的新操作。
實現的模塊有:
- ObjectStructure(對象結構):用于存儲 Element?對象,提供了遍歷元素的方法。
-
Visitor(訪問者):聲明了對不同 Element?的訪問方法。
- ConcreteVisitor(具體訪問者):實現了 Visitor 的訪問方法,定義了對每種元素的具體訪問邏輯。
- Element(元素):定義了接受 Visitor 訪問的方法。
- ConcreteElement(具體元素):實現了 Element?的被訪問方法,定義了接受訪問者的具體邏輯。
使用場景
當不希望去修改一個類的內部結構,但是要給這個類添加大量操作時。
或者說,不希望對一個類的操作“污染”了這個類本身時。
實現
qFind
qFind 函數類似于?std::find 函數,但是現在已經過時,不建議使用。實現qFind的例子為:
QList<int> numbers = {1, 2, 3, 4, 5};
int index = qFind(numbers.begin(), numbers.end(), 3) - numbers. Begin();
在這個例子里:
qFind:具體訪問者(Concrete Visitor),實現了具體的查找特定邏輯的功能。
int :?ConcreteElement(具體元素),提供了qFind的訪問方法。
QList<int> numbers :ObjectStructure(對象結構),儲存了大量的int元素。