在實際開發中也會遇到這種情況,有乙個屬性類e,有abcd四個屬性,另外有四個類abcd,要去訪問類e,a只訪問屬性a,b只訪問屬性b,c只訪問屬性c,d只訪問屬性d。這時候訪問者模式就派上用場了。
定義:封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變這個資料結構的前提下定義作用於這些元素的新的操作。
結構:
適用場景:
下面就是訪問者模式的編碼實現,以面試者來公司面試為例:
element:
public
abstract
class element
abstract
void accept(visitor visitor);
}
interviewee(面試者):
public
class
interviewee
extends
element
@override
void accept(visitor visitor)
}
visitor:
public
inte***ce visitor
concretevisitor:
//助理只關心面試者的一些基本資訊
public
class
assistant
implements
visitor
}//老闆關心面試者有什麼技能,會做什麼工作
public
class
boss
implements
visitor
}
objectstructure:
//模擬乙個面試的過程
public
class
interviewee
extends
element
@override
void accept(visitor visitor)
}
test:
public
class test
}
總結:gof如是說:大多數情況下,你並不需要使用訪問者模式,但是當你一旦需要使用它時,那就是真的需要它了。在現實情況下,需要根據具體的情況來評估是否合適使用訪問者模式,例如,我們的物件結構是否穩定;使用訪問者模式能否優化我們的**,而不是讓**變的更複雜。
參考:《android原始碼設計模式解析與實戰》
訪問者模式(行為型)
在大話設計模式一書中提到一種場景,男人和女人在面對不同的事情時會有不同的反應,例如成功 失敗 結婚 戀愛等等,在這種結構相對穩定 只有男人和女人 而遇到的情況多變的情形下,我們就可以用訪問者模式來實現,還是先看下面的介紹吧。1 定義 表示乙個作用於某物件結構中的各元素的操作。它可以使你在不改變各元素...
Java設計模式 行為型 訪問者模式
這個世界上存在很多事情,每個人都有各自要做的事情,有屬於你的事情,當然也有屬於我的事情,不過我們都在為各自的事情努力奮鬥。這個世界存在的很多事情 public inte ce goal 我有我的目標 public inte ce yougoal 你有你的目標 public inte ce megoa...
二十四 訪問者模式(行為型)
visitor模式也叫訪問者模式,是行為模式之一,它分離物件的資料和行為,使用visitor模式,可以不修改已有類的情況下,增加新的操作。比如有乙個公園,有一到多個不同的組成部分 該公園存在多個訪問者 清潔工a負責打掃公園的a部分,清潔工b負責打掃公園的b部分,公園的管理者負責檢點各項事務是否完成,...