PHP設計模式 訪問者模式

2021-10-11 10:21:09 字數 2632 閱讀 7581

訪問者模式(visitor):表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。

/**

* 抽象訪問者

* class visitorstate

*/abstract

class

visitorstate

/** * 抽象類,定義乙個accept操作

* class elementperson

*/abstract

class

elementperson

/** * 具體訪問者,成功狀態

* class concretevisitorsuccess

*/class

concretevisitorsuccess

extends

visitorstate

public

function

getmanconclusion

(concreteelementman $concreteelementman):

時,背後多半有乙個偉大的女人。";

}public

function

getwomanconclusion

(concreteelementwoman $concreteelementwoman):

時,背後大多有乙個不成功的男人。";

}}/** * 具體訪問者,失敗狀態

* class concretevisito***iling

*/class

concretevisito***iling

extends

visitorstate

public

function

getmanconclusion

(concreteelementman $concreteelementman):

時,悶頭喝酒,誰也不用勸。";

}public

function

getwomanconclusion

(concreteelementwoman $concreteelementwoman):

時,眼淚汪汪,誰也勸不了。";

}}/** * 具體元素,男人

* class concreteelementman

*/class

concreteelementman

extends

elementperson

public

function

accept

(visitorstate $visitorstate)}

/** * 具體元素,女人

* class concreteelementwoman

*/class

concreteelementwoman

extends

elementperson

public

function

accept

(visitorstate $visitorstate)}

/** * 物件結構

* class objectstructure

*/class

objectstructure

/** * 移除

* @param elementperson $elementperson

*/public

function

remove

(elementperson $elementperson)}

}/**

* 檢視顯示

* @param visitorstate $visitorstate

*/public

function

display

(visitorstate $visitorstate)}

}// 客戶端呼叫

$objectstructure

=new

objectstructure()

;// 新增男人、女人

$objectstructure

->

add(

newconcreteelementman()

);$objectstructure

->

add(

newconcreteelementwoman()

);// 成功時反應

$success

=new

concretevisitorsuccess()

;$objectstructure

->

display

($success);

// 失敗時反應

$failing

=new

concretevisito***iling()

;$objectstructure

->

display

($failing);

// 結果

男人:成功時,背後多半有乙個偉大的女人。

女人:成功時,背後大多有乙個不成功的男人。

男人:失敗時,悶頭喝酒,誰也不用勸。

女人:失敗時,眼淚汪汪,誰也勸不了。

PHP設計模式 訪問者模式

宣告 本系列部落格參考資料 大話設計模式 作者程杰。訪問者模式 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。uml類圖 角色 1.抽象訪問者 state 為該物件結構中具體元素角色宣告乙個訪問操作介面。該操作介面的名字和引數標識了傳送訪問請...

php 設計模式 之 訪問者模式

訪問者模式實際上是讓外部類能夠獲取樹形結構的每個節點的物件,對每個物件進行操作的模式,他能讓我們在不改動原有樹形結構的基礎上擴充套件功能。比如統計等等 在這種模式下,必須有的幾個要素 1 具體的元素物件,訪問者實際要訪問的位置 即節點 2 穩定的樹形結構,每個節點都是乙個元素物件,一般在組合模式下比...

設計模式 訪問者模式

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