定 義:表示作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。
結構圖:
示例:
、狀態類:
//view code狀態的抽象類
abstract
class
action
//成功 狀態
class
success : action
時,多半有個偉大的女人
", concreteelementa.gettype().name, this
.gettype().name);
}public
override
void
getwomanconclusion(woman concreteelementb)
時,肯定有個不成功的男人
", concreteelementb.gettype().name, this
.gettype().name);}}
//失敗 狀態
class
failing : action
時,悶頭喝酒,誰也不用勸
", concreteelementa.gettype().name, this
.gettype().name);
}public
override
void
getwomanconclusion(woman concreteelementb)
時,眼淚汪汪,誰也勸不了
", concreteelementb.gettype().name, this
.gettype().name);}}
人,男人,女人:
//view code"人"的抽象類
abstract
class
person1
//男人
class
man : person1
}//女人
class
woman : person1
}
物件結構類:
//view code物件結構
class
objectstructure
//移除
public
void
detach(person1 person)
//檢視顯示
public
void
display(action visitor)}}
客戶端呼叫:
objectstructure o = newview codeobjectstructure();
//物件結構中加入要對比的「男人」和「女人」
o.attach(new
man());
o.attach(
newwoman());
//成功時的反應
success v1 = new
success();
o.display(v1);
//失敗時的時的反應
failing v2 = new
failing();
o.display(v2);
//結婚時的反應
//marry v3 = new marry();
結果:
Java設計模式之訪問者模式 Visitor 實踐
訪問者模式定義 主要將資料結構與資料操作分離。需要處理穩定的資料結構和易變的操作耦合問題,此時可以使用訪問者模式。以下 演示訪問者模式簡單的實際運用 定義乙個介面gohome package com.ldl.cn.visitormodel public inte ce gohome定義乙個類goho...
設計模式 訪問者模式
訪問者模式是一種資料操作與資料結構分離的設計模式,訪問者模式的基本想法是,軟體系統中擁有乙個由許多物件構成的 比較穩定的物件結構,這些物件的類都擁有乙個accept方法用來接受訪問者物件的訪問。訪問者是乙個介面,它擁有乙個visit方法,這個方法對訪問到的物件結構中不同型別的元素作出不同的處理。在物...
設計模式 訪問者模式
訪問者模式 visitor 表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。例子 男人和女人在不同的狀態下會有不同反應,採用訪問者模式,可以增加狀態很方便 抽象狀態類 class action 男人反應 virtual void getwom...