設計模式 行為型設計模式 9 訪問者模式(php)

2021-10-10 09:40:49 字數 1083 閱讀 8916

行為型設計模式

訪問者模式

訪問者模式(visitor pattern)屬於行為模式之一,它將相對穩定的資料或元素與他們的操作分離解耦,使得可以在不改變各元素類的前提下定義作用與這些元素的新操作。

訪問者模式主要解決穩定的資料結構和易變的操作耦合問題,把資料結構和作用與資料結構上的操作解耦,使得操作集合可以相對自由的演化。

1、visitor抽象訪問者介面角色:

它定義了對每乙個元素(element)訪問的行為,他的引數就是可以訪問的元素,它的抽象方法個數理論上與元素的個數是一致的。從這點可以看出,訪問者模式要求元素的個數不能改變(如果元素的個數經常變化,則違背了開放封閉原則,不適合於訪問者模式)

2、concretevisitor(具體訪問這橘色)

它需要給出對每乙個元素訪問時所產生的具體行為。

3、element抽象元素角色

定義了乙個accept()接待方法,指每每乙個元素都要可以被訪問者訪問

4、concreteelement具體元素角色:

實現了抽象介面中的accept()接待方法,而這個實現,通常情況下是使用訪問者提供的訪問該元素的方法

5、objectstructure結構物件角色:

結構物件是乙個具有容器性質或者符合物件特性的類,它會含有一組元素(element),並且可以迭代這些元素,供訪問者訪問。

1、資料結構穩定,作用於資料結構的操作經常變化的時候

2.乙個資料結構中,存在一些與其不相關的操作時,需要將這些操作分離出去,減少這些元素的職責,可以使用訪問者模式

1、能夠在不修改元素結構的情況下,為物件結構中的元素增加新的操作和功能

2.通過訪問者來定義震哥物件結構的通用功能,提高復用程度

3.分離元素無關的行為,把行為相關的封裝在一起,構成乙個訪問者,這樣訪問者的功能都比較單一

1、物件結構變化困難,如果物件結構發生了變化,訪問者結構的實現都要發生相應的變化,違反開放封閉原則

2.訪問者模式通常需要將物件結構開放內部資料給訪問者和objectstructure,破壞了物件的封裝性

Java設計模式 行為型 訪問者模式

這個世界上存在很多事情,每個人都有各自要做的事情,有屬於你的事情,當然也有屬於我的事情,不過我們都在為各自的事情努力奮鬥。這個世界存在的很多事情 public inte ce goal 我有我的目標 public inte ce yougoal 你有你的目標 public inte ce megoa...

行為型設計模式之訪問者模式(Visitor)

在講解訪問者模式之前,我們先來看乙個例子 假設現階段公司的技術部門要求員工彙總各自的基礎資訊,以及工作內容。結構如下 public class visitor 01 public void report public abstract string getotherinfo 管理層 static c...

訪問者模式(行為型)

在實際開發中也會遇到這種情況,有乙個屬性類e,有abcd四個屬性,另外有四個類abcd,要去訪問類e,a只訪問屬性a,b只訪問屬性b,c只訪問屬性c,d只訪問屬性d。這時候訪問者模式就派上用場了。定義 封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變這個資料結構的前提下定義作用於這些元素的...