設計模式 訪問者模式

2021-09-28 19:59:27 字數 1049 閱讀 1476

封裝作用於某種資料結構(如list set map等)中各元素的操作

可以在不改變各元素的類的前提下,定義作用於這些元素的操作

訪問者模式平時被使用到的比較少

(1)乙個資料結構包含很多態別的物件

(2)資料結構與資料操作分離

優點增加新的操作很容易,即增加乙個新的訪問者

缺點增加新的資料結構比較困難

具體元素的變更比較麻煩

訪問者模式與迭代器模式:兩者都是對資料結構進行操作,區別在於 訪問者模式是對資料結構中的元素進行某種處理,迭代器的重點則側重於遍歷

例子:這裡有個圖書館,裡面有免費書籍+付費書籍,然後有訪問者

public abstract class book 

public void setname(string name)

public abstract void accept(ivisistor visistor);

}

免費書籍

public class freebook  extends book 

}

付費書籍

public class paymentbook extends book 

public void setprice(double price)

@override

public void accept(ivisistor visistor)

}

訪問者幾口

public inte***ce ivisistor
具體的訪問者

public class visitor implements ivisistor 

@override

public void visit(paymentbook paymentbook)

}

測試類

public class test 

}}

設計模式 訪問者模式

訪問者模式是一種資料操作與資料結構分離的設計模式,訪問者模式的基本想法是,軟體系統中擁有乙個由許多物件構成的 比較穩定的物件結構,這些物件的類都擁有乙個accept方法用來接受訪問者物件的訪問。訪問者是乙個介面,它擁有乙個visit方法,這個方法對訪問到的物件結構中不同型別的元素作出不同的處理。在物...

設計模式 訪問者模式

訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。例子 男人和女人在不同的狀態下會有不同反應,採用訪問者模式,可以增加狀態很方便 抽象狀態類 class action 男人反應 virtual void getwom...

設計模式 訪問者模式

在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。1 符合單一職責原則。2 優秀...