日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

访问者(Visitor)模式

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

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


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

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