C 設計模式 訪問者模式

2021-07-14 01:30:45 字數 751 閱讀 9573

1、訪問者模式定義

表示乙個作用於其物件結構中的各個元素的操作。

訪問者模式是一種物件行為型模式,它為操作儲存不同的型別元素的物件結構提供了一種解決方案,使用者可以對不同型別的元素施加不同的操作。

訪問者模式常常和組合模式一起使用。

2、訪問者模式結構

該模式包含五種角色:

1)抽象訪問者類(visitor):為物件結構中的每乙個元素類宣告乙個訪問操作。

2)具體訪問者類(concretevisitor):實現了每個抽象訪問者宣告的操作,每乙個操作用於訪問物件結構中一種型別的元素。

3)抽象元素類(element):該類一般是抽象類或者介面,宣告乙個accept()方法,用於接受訪問者的訪問操作,該方法通常以乙個抽象訪問者作為引數。

4)具體元素類(concreteelement):實現了accept()方法,在該方法中呼叫訪問者的訪問方法以便完成對乙個元素的操作。

5)物件結構類(objectstructure):是乙個元素的集合,用於存放元素物件,並且提供了遍歷其內部元素的方法。物件結構可以結合組合模式來實現,也可以是乙個簡單的集合物件。

3、訪問者模式的優點

1)便於增加新的訪問操作;

2)類的職責更加清晰,有利於物件結構中元素物件的復用,相同的物件結構可以供多個不同的訪問者訪問;

3)使用者在不修改現有元素類層次結構的情況下,定義作用於該層次結構的操作。

4、訪問者模式的缺點

缺點主要是不便於增加新的元素類,同時新增新的元素類會破壞封裝性。

C 設計模式 訪問者模式

表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。1.visitor 抽象訪問者角色,為該物件結構中具體元素角色宣告乙個訪問操作介面。該操作介面的名字和引數標識了傳送訪問請求給具體訪問者的具體元素角色,這樣訪問者就可以通過該元素角色的特定介面直接...

C 設計模式 訪問者模式

一.介紹 訪問者模式 visitor pattern 屬於行為型模式。表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。二.實現 舉個例子,如果有元素a b類,想呼叫這些元素中的print方法,很簡單地,只要例項化去呼叫就可以。public a...

C 設計模式 訪問者模式

動機 在軟體構建的過程中,由於需求的改變,某些類層次結構中常常需要增加新的行為 方法 如果直接在基類中做這樣的更改,將會給子類帶來很繁重的變更負擔,甚至破壞原有設計。如何在不更改類層次結構的前提下,在執行時根據需要透明地為類層次結構上的各個類動態新增新的操作,從而避免上述問題?模式定義 表示乙個作用...