訪問者模式(visitor),表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用域結構上的操作之間的耦合解脫開,使用操作集合可以相對自由地演化。
訪問者模式的目的是要把處理從資料結構分離出來,有比較穩定的資料結構,又有易於變化的演算法時,使用訪問者模式就是比較適合的, 因為訪問者模式使得演算法操作的增加變得容易。反之,如果資料結構物件易於變化,經常有新的資料物件增加進來,就不適合使用訪問者模式。
優點:缺點:
public abstract class person
public class man : person
}public class woman : person
}public abstract class abstractaction
public class success : abstractaction
時,背後多半有乙個偉大的女人");
}public override void getwomanconclusion(woman woman)
時,背後多有乙個不成功的男人");
}}public class fail : abstractaction
時,背後多半有乙個偉大的女人");
}public override void getwomanconclusion(woman woman)
時,背後多有乙個不成功的男人");
}}public class marriage : abstractaction
時,感慨道:戀愛遊戲終結時,'有妻徒刑'遙無期");
}public override void getwomanconclusion(woman woman)
時,欣慰曰:愛情長路跑漫漫,婚姻保險保平安.");
}}public class personstructure
public void detach(person person)
public void display(abstractaction visitor)
}}var personstructure = new personstructure();
personstructure.attach(new man());
personstructure.attach(new woman());
personstructure.display(new success());
personstructure.display(new fail());
personstructure.display(new marriage());
訪問者模式允許乙個或者多個操作應用到一組物件上,解耦操作和物件本身。它可以算是 23 種經典設計模式中最難理解的幾個之一。因為它難理解、難實現,應用它會導致**的可讀性、可維護性變差
所以,訪問者模式在實際的軟體開發中很少被用到,在沒有特別必要的情況下,建議你不要使用訪問者模式。
設計模式之訪問者模式
先看一下下面這段 class person public string getaction public void setaction string action public void getconclusion else if action exciting else if action gri...
設計模式之訪問者模式
我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...
設計模式之訪問者模式
定義 表示一介作用於某個物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。結構圖 示例 public inte ce vistor public class concretevisitor1 implements vistor override public ...