訪問者模式一般被使用者一些資料結構穩定的場合,資料物件穩定,而實際對它的操作是不穩定的,他可以接受不同的物件而做出不同的反應,對與穩定的資料結構,它的功能和方法也就穩定,所以就把它抽象出來,抽取出來,而對於訪問它的物件是經常改變的,傳遞不同的實際物件也就得到不同的執行效果,多型的體現
訪問者模式的參與物件:
抽象節點:也就是穩定的資料結構物件,同時也宣告具體資料結構物件的操作,操作方法接收訪問者
具體節點:具體穩定資料結構的實現,接受訪問者,呼叫訪問者。
抽象訪問者:對與不同的具體節點,做出相應的反應,具體節點是穩定的,從而訪問者的一般具體操作也就相對穩定
具體訪問者:具體實現對不同具體節點的操作
結構物件:封裝起來的所有具體節點,當乙個新的訪問者增加的時候,只要呼叫結構物件的方法,就可以看到,他作用於所有具體節點上的效果。
類的實現:
//抽象節點
public inte***ce node
//具體節點,具體節點一般是有限的,因為資料結構是穩定,比如人類,具體只能是男人女人
public class nodeman implements node
}public class nodewomen implements node
}//抽象訪問者,對每個節點做出的相應,即時每個節點接受不同訪問者的反應
public inte***ce visitor
public class visitora implements visitor
public void operator(nodeb node)
}public class visitorb implements visitor
public void operator(nodeb node)
}//結構物件,封裝了所有具體節點,一簡化在客戶端呼叫的時候,每個訪問者傳遞過來,還需要一次作用於每個具體節點,有了結構物件,呼叫它的方法,他會幫你遍歷所有的節點物件,做出對訪問者的反應結果
public class structobject ;
public void addnode(node node)
public void accpetvisitor(visitor visitor) }}
客戶端呼叫實現:
public class test
}
設計模式(JAVA) 訪問者模式
場景 將公司中所有人員資訊都列印匯報出來,其中假設公司有兩類人員 1.普通員工 2.管理層 不同人員型別的資訊是不同的。訪問者模式 定義 封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。包含如下幾個角色 1.visitor 抽象訪問者 抽象類或...
Java設計模式 訪問者模式
訪問者模式 visitor pattern 以列印公司員工的資訊報表為例。下面先看下類圖。使用了乙個模版方法模式,把所要的資訊都列印出來。這樣子寫出來的 就不太符合公司不同管理層的需要,不能滿足各自的需求。每個普通員工類和經理類都乙個方法 report,那是否可以把這個方法提取到另外乙個類中來實現呢...
Java設計模式 訪問者模式
定義 封裝某些作用於某種資料結構中各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。class a public void method2 b b class b 看一下在類a中,方法method1和方法method2的區別在 方法method1很簡單,就是列印出一句 我是a...