設計模式 訪問者模式

2021-07-27 18:15:06 字數 1334 閱讀 6293

訪問者模式是一種資料操作與資料結構分離的設計模式,訪問者模式的基本想法是,軟體系統中擁有乙個由許多物件構成的、比較穩定的物件結構,這些物件的類都擁有乙個accept方法用來接受訪問者物件的訪問。訪問者是乙個介面,它擁有乙個visit方法,這個方法對訪問到的物件結構中不同型別的元素作出不同的處理。在物件結構的一次訪問過程中,我們遍歷整個物件結構,對每乙個元素都實施accept方法,在每乙個元素的accept方法中會呼叫訪問者的visit方法,從而使訪問者得以處理物件結構的每乙個元素,我們可以針對物件結構設計不同的訪問者類來完成不同的操作,達到區別對待的效果。

封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作

在這種地方你一定要考慮使用訪問者模式:業務規則要求遍歷多個不同的物件。這本身也是訪問者模式的出發點,迭代器模式只能訪問同類或同介面的資料(當然了,如果你使用instanceof,那麼能訪問所有的資料,這沒有爭論),而訪問者模式是對迭代器模式的擴充,可以遍歷不同的物件,然後執行不同的操作,也就是針對訪問的物件不同,執行不同的操作。

public

abstract

class element

public

class

cocreteelement1

extends

element

@override

public

void

accept(ivisitor visitor)

}

public

class

cocreteelement2

extends

element

@override

public

void

accept(ivisitor visitor)

}

public

inte***ce ivisitor

public

class

visitor

implements

ivisitor

@override

public

void

visit(cocreteelement2 element2)

}

public

class objectstruture else

}}

public

class test

}}

設計模式 訪問者模式

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

設計模式 訪問者模式

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

設計模式 訪問者模式

訪問者模式,封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。是一種分離物件資料結構與行為的方法,通過這種分離,可為乙個被訪問者動態新增新的操作而無需對資料結構本身進行修改。示例 訪問目標 public inte ce isubject 具體的訪...