設計模式13 訪問者模式

2022-05-09 05:12:06 字數 1251 閱讀 5471

訪問者模式中,有乙個資料體,新增了各個訪問物件。這些訪問物件在不同的狀態時,會有不同的反應。這種模式中,物件與狀態相分離,互不干擾。

visitor.h內容

1

#ifndef visitor_h_h

2#define visitor_h_h34

5 #include 6 #include 7

using

namespace

std;89

class

state

1015

16};

1718

state

1924

virtual

void

getwomanstate()

27};

2829

30class statesad : public

state

3136

virtual

void

getwomanstate()

3940

};41

4243

class

people

4448

};49

50class man : public

people

5156

};57

58class woman : public

people

5964

};65

6667

class

visitor

6871

void

visit()75}

7677

void additem(people *people)

8081

void setstate(state *state0)

8283

private

:84 vectorvecpeople;

85 state *state;

86};

8788

89void

visitortest()

90106

107#endif

執行結果:

例項中,男士和女士在高興和悲傷時會有不同的動作反應,由乙個visitor新增所有people的例項後,設定不同的狀態以對每個個體進行訪問。

設計模式 訪問者模式

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

設計模式 訪問者模式

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

設計模式 訪問者模式

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