8
發現自己試圖找到一個鏈接到這種設計模式的官方定義,我相信我在Go4中看到,但似乎無法在任何地方找到它。這個模式叫什麼(有助於避免類型轉換)?
class Processor{
ProcessParameter(AbstractParameter x){
x.Process(this);
}
ProcessParameter(ParameterA x){
... A-specific logic...
}
ProcessParameter(ParameterB x){
... B-specific logic...
}
}
abstract class AbstractParameter{
abstract void Process(Processor p);
}
class ParameterA : AbstractParameter{
override void Process(Processor p){
p.ProcessParameter(this);
}
}
class ParameterB : AbstractParameter{
override void Process(Processor p){
p.ProcessParameter(this);
}
}
我更喜歡你的答案的第一個版本。這是_is_ Double Dispatch。訪問者模式增加了_multiple_ Visitors的概念(在我的例子中稱爲「處理器」)。 – zvolkov 2009-04-27 18:14:52