訪問者模式 Visitor

2021-06-20 13:35:05 字數 2330 閱讀 1883

訪問者模式-visitor

首先看一下男人與女人不同狀態下反應的實現

**結構圖:

**狀態的抽象類和人的抽象類

abstract class action

abstract class person

在這裡關鍵在於人只分為男人與女人,分類穩定

具體狀態類 成功

class success : action

時,背後多半有乙個偉大的女人",concreteelementa.gettype().name,this.gettype().name);

}public override void getwomanconclusion(man concreteelementb)

時,背後多半有乙個不成功的男人",concreteelementa.gettype().name,this.gettype().name);}}

//失敗類

class failing : action

class man : person

}class woman : person

}這裡提到了雙分派技術,雙分派意味著得到執行的操作決定於請求的種類和兩個接收者的型別。接收方法就是乙個雙分派的操作,它得到執行的操作不僅決定於』狀態『類的具體狀態,還決定於它訪問的』人『的類別。

物件結構類

class objectstructure

public void detack(person element)

public void display(action visitor)}}

---客戶端**---

static void main(string args)

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

訪問者模式結構圖:

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

訪問者模式的目的是要把處理從資料結構分離出來。

訪問者模式的優點就是增加新的操作容易,因為增加新的操作意味著增加乙個新的訪問者。訪問者模式將有關的行為集中到乙個訪問者物件中。

缺點其實也就是使增加新的資料結構變得困難。

訪問者模式可以說是最複雜的的乙個模式。

**實現

abstract class visitor

具體訪問者類

class concretevisitor1 : visitor

被 訪問",concreteelementa.gettype().name,this.gettype().name);

}public override void visitconcreteelementb(concreteelementb concreteelementb)

被 訪問",concreteelementb.gettype().name,this.gettype().name);}}

class concretevisitor2 : visitor

被 訪問",concreteelementa.gettype().name,this.gettype().name);

}public override void visitconcreteelementb(concreteelementb concreteelementb)

被 訪問",concreteelementb.gettype().name,this.gettype().name);}}

element類,定義乙個accept操作,它以乙個訪問者為引數

abstract class element

class concreteelementa : element

public void operationa(){}}

class concreteelementb : element

public void operationa(){}}

objectstructure類,能列舉它的元素,可以提供乙個高層的介面以允許訪問者訪問它的元素

class objectstructure

public void detack(element element)

public void display(action visitor)}}

---客戶端**---

static void main(string args)

Visitor(訪問者模式)

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

訪問者模式(Visitor)

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

訪問者模式(Visitor)

訪問者模式 visitor 意圖 表示乙個作用於某物件結構中的各元素的操作,它使你在不改變各元素的類的前提下定義作用於這些元素的新操作。應用 作用於編譯器語法樹的語義分析演算法。模式結構 心得 訪問者模式是要解決對物件新增新的操作和功能時候,如何盡可能不修改物件的類的一種方法。一般為物件新增功能,是...