訪問者模式,是行為型設計模式之一。訪問者模式是一種將資料操作與資料結構分離的設計模式,它可以算是 23 中設計模式中最複雜的乙個,但它的使用頻率並不是很高,大多數情況下,你並不需要使用訪問者模式,但是當你一旦需要使用它時,那你就是需要使用它了。
當我們想要在不改變類的情況下為物件結構的類定義新操作時,我們使用訪問者模式。想象一下,對api執行http請求的軟體場景。大多數http api都有一定的限制,允許每分鐘執行一定數量的請求。我們可能有乙個不同的類來執行請求,並且還考慮了與它們互動的api的業務邏輯。
如果我們想要檢查這些呼叫並列印一些資訊或將請求相關資訊儲存到資料庫,那麼訪問者模式可能非常合適。
訪問介面:
public inte***ce visitor
這個介面不會指定任何方法; 但擴充套件它的介面將包含訪問特定型別的方法。我們這樣做是為了能夠實現鬆散耦合的訪問者實現(甚至是基於組合的訪問者)。然後我們將實現可訪問的介面。
public inte***ce visitable
請求執行類:
public class locationrequestexecutor implements visitable
@override
public void accept(locationvisitor visitor)
public int getsuccessfulrequests()
public double getrequestsperminute()
}
public class routerequestexecutor implements visitable
@override
public void accept(routevisitor visitor)
public int getsuccessfulrequests()
public double getrequestsperminute()
}
我們將為這些型別的執行程式新增訪問者介面:
public inte***ce locationvisitor extends visitor
public inte***ce routevisitor extends visitor
建立乙個實現上述介面的訪問者:
public class requestvisitor implements locationvisitor, routevisitor
@override
public void visit(routerequestexecutor routerequestexecutor)
}
exec:
public class visitormain
}
設計模式(JAVA) 訪問者模式
場景 將公司中所有人員資訊都列印匯報出來,其中假設公司有兩類人員 1.普通員工 2.管理層 不同人員型別的資訊是不同的。訪問者模式 定義 封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。包含如下幾個角色 1.visitor 抽象訪問者 抽象類或...
Java設計模式 訪問者模式
訪問者模式 visitor pattern 以列印公司員工的資訊報表為例。下面先看下類圖。使用了乙個模版方法模式,把所要的資訊都列印出來。這樣子寫出來的 就不太符合公司不同管理層的需要,不能滿足各自的需求。每個普通員工類和經理類都乙個方法 report,那是否可以把這個方法提取到另外乙個類中來實現呢...
JAVA設計模式 訪問者模式
訪問者模式一般被使用者一些資料結構穩定的場合,資料物件穩定,而實際對它的操作是不穩定的,他可以接受不同的物件而做出不同的反應,對與穩定的資料結構,它的功能和方法也就穩定,所以就把它抽象出來,抽取出來,而對於訪問它的物件是經常改變的,傳遞不同的實際物件也就得到不同的執行效果,多型的體現 訪問者模式的參...