三十 訪問者模式

2022-02-25 19:09:12 字數 1735 閱讀 5021

訪問者模式:

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

知識點:

訪問者模式是所有模式中最複雜的乙個。

適用於資料結構相對穩定的系統(很少很少使用)。如人只有男人和女人

它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化。

demo1

//狀態抽象類

abstract class action

//得到男人的結論

public abstract void getmanconclusion(man concreteelementa);

//得到女人的結論

public abstract void getwomanconclusion(woman concretelementb);

//成功

class success:action

public override void getmanconclusion(man concreteelementa)

//被訪問

console.writeline("時,背後多半有乙個偉大的女人。",

concreteelementa.gettype().name,this.gettype().name);

public override void getwomanconclusion(woman concretelementb)

console.writeline("時,背後多半有乙個失敗的男人。",

concretelementb.gettype().name,this.gettype().name);

//失敗

//戀愛

//其他例子

//抽象類

abstract class person

//接受

public abstract void accept(action visitor);//獲得狀態的物件

class man:person

public override void accept(action visitor)

visitor.getmanconclusion(this);

class woman : person

public override void accept(action visitor)

visitor.getwomanconclusion(this);

//物件結構。用於對比男女在不同的狀態

class objectstructure

private ilistelements=new list();

//增加

public void attach(person element)

elements.add(element);

//移除

public void detach(person element)

elements.remove(element);

//檢視顯示

public void display(action visitor)

foreach (person e in elements)

e.accept(visitor);

訪問者模式

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

訪問者模式

行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...

訪問者模式

1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...