Java設計模式(23)——行為模式之訪問者模式
阿新 • • 發佈:2017-11-03
font string 概念 str ron 直接 integer span das
一、概述
概念
作用於某個對象群中各個對象的操作。它可以使你在不改變這些對象本身的情況下,定義作用於這些對象的新操作。
引入
試想這樣一個場景,在一個Collection中放入了一大堆的各種對象的引用,取出時卻需要根據這些對象的不同具體類型執行不同操作,那我們有如下方案:
public void show(Collection c) {
Iterator it = c.iterator();
while (it.hasNext()) {
Object o = it.next();
if (o instanceof Integer) {
// Integer對應的操作
} else if (o instanceof String) {
// String對應的操作
} else if (o instanceof Collection) {
// Collection對應的操作
} else {
// 省略若幹個else if
}
}
}
就不分析說這段代碼到底有什麽問題了,我們直接引入解決辦法:訪問者模式——把數據結構和數據結構之上的操作解耦
UML簡圖
Java設計模式(23)——行為模式之訪問者模式