訪問者模式(visitor),表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變元素的類的前提下定義作用於這些元素的新操作。
1//狀態抽象類
2public
abstract
class
action
3
1//人抽象類
2public
abstract
class
person
3
1public
class
success : action
2時,有乙個偉大的女人
", concretea.gettype().name, this
.gettype().name);6}
78public
override
void
getwomanconclusion(woman concreteb)
9時,有乙個花心的男人
", concreteb.gettype().name, this
.gettype().name);11}
12 }
1public
class
fail : action
2時,有乙個敗家的女人
", concretea.gettype().name, this
.gettype().name);6}
78public
override
void
getwomanconclusion(woman concreteb)
9時,有乙個勒色的男人
", concreteb.gettype().name, this
.gettype().name);11}
12 }
首先在客戶程式中將具體狀態座位引數傳遞給「男人」 類完成了一次分派,然後「男人」類呼叫座位引數的「具體狀態」 中的方法「男人反應」,同時將自己(this)作為引數傳遞進去。這便完成了第二次分派。
1public
class
man : person
28 }
1public
class
woman : person
27 }
物件結構類由於總是需要「男人」 與「女人」 在不同狀態的對比,所以我們需要乙個「物件結構」 類來針對不同的「狀態」 遍歷「男人」與「女人」,得到不同的反應。
1//物件結構類
2public
class
objstructure310
public
void
remove(person element)
1114
public
void
display(action vistor)
1520
}21 }
1class
program
219 }
1、訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,是的操作集合可以相對自由地演化。
2、訪問者模式的目的是要把處理從資料結構分離出來。很多系統可以按照演算法和資料結構分開,如果這樣的系統有比較穩定的資料結構,又有易於變化的演算法的話,使用訪問者模式就是比較合適的,因為訪問者模式使得演算法操作的增加變得容易。
3、增加新的操作很容易,因為增加新的操作就意味著增加乙個新的訪問者。訪問者模式將有關的行為集中到乙個訪問者物件中。
訪問者模式
訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...
訪問者模式
行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...
訪問者模式
1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...