採用「雙重委派」方式,使訪問者和被訪問物件進行隔離。有點難理解。。。。
它有一定的應用侷限性,訪問者和被訪問者應該可被列舉,結構相對固定。比如說:運算子處理與資料結構的關係。(運算子+-*/可列舉,型別如string, int ,object也是可以列舉的)
我們以處理運算表示式為例,來寫個例子,只涉及+-,型別只涉及int,float, double。
public inte***ce element
@allargsconstructor
@data
public class doubleelement implements element
}@allargsconstructor
@data
public class floatelement implements element
}@allargsconstructor
@data
public class intelement implements element
}public inte***ce visitor
public class minusvisitor implements visitor
public void cal(floatelement element)
public void cal(intelement element)
}public class plusvisitor implements visitor
public void cal(floatelement element)
public void cal(intelement element)
}public class client
}複製**
Visitor(訪問者模式)
名 稱 visitor 訪問者模式 意 圖 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適 用 環 境 u 乙個物件結構包含很多類物件,它們有不同的介面,而你想對這些物件實施一些依賴於其具體類的操作。u 需要對乙個物件結構中的物件進行很多...
訪問者模式(Visitor)
訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。他使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者模式適用於資料結構相對穩定的系統。他把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由地演化。訪問者模式的目的是要把處理從資料結構分離出來...
訪問者模式 Visitor
訪問者模式 visitor 首先看一下男人與女人不同狀態下反應的實現 結構圖 狀態的抽象類和人的抽象類 abstract class action abstract class person 在這裡關鍵在於人只分為男人與女人,分類穩定 具體狀態類 成功 class success action 時,...