訪問者模式(Visitor)

2022-01-31 23:18:12 字數 1813 閱讀 9911

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

訪問者模式適用於資料結構相對穩定的系統。它吧資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。

訪問者模式的目的是要把處理從資料結構中分離出來。有比較穩定的資料結構,又有易於變化的演算法的話,使用訪問者模式就是比較合適的。因為訪問者模式使得演算法操作的增加變的容易。

它的優點是增加新的操作很容易,因為增加新的操作意味著增加乙個新的訪問者。訪問這模式將有關的行為集中到乙個訪問者物件中。缺點是增加新的資料機構變的困難了。

//

visitor pattern

//structural example

using

system;

using

system.collections.generic;

namespace

dofactory.gangoffour.visitor.structural

}//"visitor"

abstract

class

visitor

//"concretevisitor"

class

concretevisitor1 : visitor

visited by

",concreteelementa.gettype().name, this

.gettype().name);

}public

override

void

visitconcreteelementb(concreteelementb concreteelementb)

visited by

",concreteelementb.gettype().name, this

.gettype().name);}}

//"concretevisitor"

class

concretevisitor2 : visitor

visited by

", concreteelementa.gettype().name, this

.gettype().name);

}public

override

void

visitconcreteelementb(concreteelementb concreteelementb)

visited by

", concreteelementb.gettype().name, this

.gettype().name);}}

//"element"

abstract

class

element

//"concreteelement"

class

concreteelementa : element

public

void

operationa()

}//"concreteelement"

class

concreteelementb : element

public

void

operationb()

}//"objectstructure"

class

objectstructure

public

void

detach(element element)

public

void

accept(visitor visitor)}}

}

Visitor(訪問者模式)

名 稱 visitor 訪問者模式 意 圖 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適 用 環 境 u 乙個物件結構包含很多類物件,它們有不同的介面,而你想對這些物件實施一些依賴於其具體類的操作。u 需要對乙個物件結構中的物件進行很多...

訪問者模式(Visitor)

訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。他使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者模式適用於資料結構相對穩定的系統。他把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。訪問者模式的目的是要把處理從資料結構分離出來...

訪問者模式 Visitor

訪問者模式 visitor 首先看一下男人與女人不同狀態下反應的實現 結構圖 狀態的抽象類和人的抽象類 abstract class action abstract class person 在這裡關鍵在於人只分為男人與女人,分類穩定 具體狀態類 成功 class success action 時,...