摘要:本文深入淺出的講述了設計模式中的
模式屬於行為型模式,其意圖是表示乙個作用於某物件結構中的各元素的操作。他使你可以在不改變個元素的類的前提下定義作用與這些元素的操作。考慮乙個訪問汽車各個部件的程式,該程式需要在汽車各個部件上執行某些操作,比如:獲取名字等等,因此它可能需要定義許多操作已進行型別檢查。這些操作大多要求對不同節點進行不同的處理,如果單純使用 類,並在便利抽象語法樹時將此物件傳遞給當前訪問的元素。當乙個元素接受該訪問者時,該元素向訪問者傳送乙個包含自身類資訊的請求,該請求同時也將該元素本身作為乙個引數,然後訪問者將為該原色執行該操作,這乙個操作以前是在該元素的類中的。使用visitor適用性:
l需要對乙個物件結構中的物件進行很多不同的並且不相關的操作。而你想避免讓這些操作汙染這些物件的類,visitor模式讓每個應用僅僅包含需要用到的操作。
l為該物件結構中的concreteelement
操作,該操作的名字和特徵標示了傳送visit
concretevisitor:
宣告的操作,每個操作實現本演算法的一部分,而該演算法片斷乃是對應於結構中物件的類。concretevisitor
element:
操作,該操作以乙個訪問者為引數。
lvisitor;
packagepublicvisitor
classvisitorpublic
visit(wheel wheel)publicvisit(body body)具體的被訪問者:visitor;implementsvoidv.visit(
}visitor;implementsengineengine();private
=
wheel new),"front right"wheel(new
)};publicaccept(visitor v)總結:訪問者模式充分利用了物件導向語言中的多型模式。把同類物件的訪問統一到乙個類中,使得改變訪問方式變得容易,增加乙個被訪問者的類也比較容易。
Java設計模式之訪問者模式 Visitor 實踐
訪問者模式定義 主要將資料結構與資料操作分離。需要處理穩定的資料結構和易變的操作耦合問題,此時可以使用訪問者模式。以下 演示訪問者模式簡單的實際運用 定義乙個介面gohome package com.ldl.cn.visitormodel public inte ce gohome定義乙個類goho...
訪問者模式 物件行為模式
終於到最後乙個模式了,意圖 表示乙個作用於某物件結構中的各元素的操作。它使你可以再不改變各元素的類的前提下定義作用於這些元素的新操作。動機 使用visitor 模式,必須定義兩個類層次 乙個對應於接受操作的元素,另乙個對應於定義對元素的操作的訪問者 visitor 給訪問者類層次增加乙個新的子類即可...
行為型模式 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。主要將資料結構與資料操作分離。...