访问者(Visitor)模式
生活随笔
收集整理的這篇文章主要介紹了
访问者(Visitor)模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
訪問者(Visitor)模式:訪問者模式的目的是封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作。一旦這些操作需要修改的話,接受這個操作的數(shù)據(jù)結(jié)構(gòu)則可以保持不變。
/*
* 抽象訪問者(Visitor)角色:聲明了一個或者多個訪問操作,形成所有的具體元素角色必須實現(xiàn)的接口。
* 具體訪問者(ConcreteVisitor)角色:實現(xiàn)抽象訪問者角色所聲明的接口,也就是抽象訪問者所聲明的各個訪問操作。
* 抽象節(jié)點(Node)角色:聲明一個接受操作,接受一個訪問者對象作為一個參量。
* 具體節(jié)點(Node)角色:實現(xiàn)了抽象元素所規(guī)定的接受操作。
* 結(jié)構(gòu)對象(ObiectStructure)角色:有如下的一些責任,可以遍歷結(jié)構(gòu)中的所有元素;
如果需要,提供一個高層次的接口讓訪問者對象可以訪問每一個元素;
如果需要,可以設(shè)計成一個復合對象或者一個聚集,如列(List)或集合(Set)。
*/
?
?
Console.WriteLine("//===============//");ObjectStructures o2 = new ObjectStructures();o2.Attach(new Man());o2.Attach(new Woman());Success s = new Success();o2.Accept(s);//失敗時候..../// <summary>/// 狀態(tài)抽象類 抽象訪問者(Visitor)/// </summary>public abstract class Action{//得到男人結(jié)論public abstract void GetManConclusion(Man man);//得到女人結(jié)論public abstract void GetWomanConclusion(Woman woman);}/// <summary>/// 人抽象類 抽象節(jié)點(Node)/// </summary>public abstract class Person{//接受public abstract void Accept(Action action);}/// <summary>/// 具體訪問者 /// </summary>public class Success : Action{public override void GetManConclusion(Man man){Console.WriteLine("{0} {1} 時,背后多半有一個偉大的女人。", man.GetType().Name,this.GetType().Name);}public override void GetWomanConclusion(Woman woman){Console.WriteLine("{0} {1} 時,背后多半有一個不成功的男人。", woman.GetType().Name, this.GetType().Name);}}public class Man : Person{public override void Accept(Action action){action.GetManConclusion(this);}}public class Woman : Person{ public override void Accept(Action action){action.GetWomanConclusion(this);}}//結(jié)構(gòu)對象(ObiectStructure)角色public class ObjectStructures{ private ArrayList elements = new ArrayList();public void Attach(Person element){elements.Add(element);}public void Detach(Person element){elements.Remove(element);}public void Accept(Action visitor){foreach (Person e in elements)e.Accept(visitor);}}?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/dragon-L/p/3792849.html
總結(jié)
以上是生活随笔為你收集整理的访问者(Visitor)模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [汇编语言]-第十章 ret,retf,
- 下一篇: Android 开机自动启动服务