設計模式二十三(訪問者模式)

2021-08-31 19:09:29 字數 987 閱讀 7538

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

類圖的**

訪問者模式的**如下:

public abstract class visitor 

public class concretevisitor1 extends visitor

@override

public void visitconcreteelementb(concreteelementb concreteelementb)

}public class concretevisitor2 extends visitor

@override

public void visitconcreteelementb(concreteelementb concreteelementb)

}public abstract class element

public class concreteelementa extends element

}public class concreteelementb extends element

}public class objectstructure

public void detach(element e)

public void accept(visitor visitor)

}}public class main

}

visitor類:為該物件結構中concreteelement的每乙個類宣告乙個visit操作

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

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

設計模式 訪問者模式(二十三)

軟體領域中的設計模式的重要性不言而喻。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型。雖然知道這些特性的定義但是並沒有做到真正的理解,這樣特性有什麼作用?用於什麼場合中等等問題,帶著疑問開始學習設計模式,主要參考 大話設計模式 和 設計模式 可復用物件導向軟體的基礎 兩本書。訪問者...

python設計模式(二十三) 訪問者模式

訪問者模式,資料結構中儲存著許多元素,當改變一種對元素的處理方式但時,我們避免重複的修改資料類的結構,那我們在設計之初就將資料的處理分離,即資料類只提供乙個資料處理的介面,而資料類的處理方法我們叫它訪問者,那麼相同結構的資料面臨不同的處理結果時,我們只需要建立不同的訪問者。我們假設一種場景 上市公司...

小話設計模式(二十三)訪問者模式

訪問者的適用情況 1 乙個物件結構包含很多類物件,它們有不同的介面,而你想對這些物件實施一些依賴於其具體類的操作。2 需要對乙個物件結構中的物件進行很多不同的並且不想關的操作,而你想避免讓這些操作 汙染 這些物件的類。3 定義物件結構的類很少改變,但經常需要在此結構上定義新的操作。本文以遊戲中的倉庫...