日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

访问者(Visitor)模式

發(fā)布時(shí)間:2025/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 访问者(Visitor)模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

訪問者(Visitor)模式:訪問者模式的目的是封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作。一旦這些操作需要修改的話,接受這個(gè)操作的數(shù)據(jù)結(jié)構(gòu)則可以保持不變。


/*
* 抽象訪問者(Visitor)角色:聲明了一個(gè)或者多個(gè)訪問操作,形成所有的具體元素角色必須實(shí)現(xiàn)的接口。
* 具體訪問者(ConcreteVisitor)角色:實(shí)現(xiàn)抽象訪問者角色所聲明的接口,也就是抽象訪問者所聲明的各個(gè)訪問操作。
* 抽象節(jié)點(diǎn)(Node)角色:聲明一個(gè)接受操作,接受一個(gè)訪問者對(duì)象作為一個(gè)參量。
* 具體節(jié)點(diǎn)(Node)角色:實(shí)現(xiàn)了抽象元素所規(guī)定的接受操作。
* 結(jié)構(gòu)對(duì)象(ObiectStructure)角色:有如下的一些責(zé)任,可以遍歷結(jié)構(gòu)中的所有元素;
    如果需要,提供一個(gè)高層次的接口讓訪問者對(duì)象可以訪問每一個(gè)元素;
    如果需要,可以設(shè)計(jì)成一個(gè)復(fù)合對(duì)象或者一個(gè)聚集,如列(List)或集合(Set)。
*/

?

?

Console.WriteLine("//===============//");ObjectStructures o2 = new ObjectStructures();o2.Attach(new Man());o2.Attach(new Woman());Success s = new Success();o2.Accept(s);//失敗時(shí)候..../// <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é)點(diǎn)(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} 時(shí),背后多半有一個(gè)偉大的女人。", man.GetType().Name,this.GetType().Name);}public override void GetWomanConclusion(Woman woman){Console.WriteLine("{0} {1} 時(shí),背后多半有一個(gè)不成功的男人。", 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)對(duì)象(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)模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。