访客模式C#:如果任何人都可以验证我在下面编写的代码遵循访客设计模式,那将会很高兴。(新代码)) [英] Visitor Pattern C#: It Will Be Glad If Anyone Can Verify The Code Which I Have Written Below Is Following Visitor Design Pattern.(New code))
问题描述
学习访客模式C#:如果有人能够验证我在下面写的代码遵循访客设计模式,那将会很高兴。
访客
命名空间 Visitorpattern3
{
interface IVisitor
{
void GetLocation(ConcreateElementGetLocation location);
void GetPackage(ConcreateElementGetPackage包);
void GetDesignation(ConcreateElementGetDesignation指定);
}
}
具体访客
<前lang =cs> 名称空间 Visitorpattern3
{
class ConcreateVisitorWipro:IVisitor
{
public void GetLocation(ConcreateElementGetLocation location)
{
Console.WriteLine( WIPRO:位置Bnagalore);
}
public void GetPackage(ConcreateElementGetPackage包)
{
Console.WriteLine( WIPRO:Package 8 Lakhs);
}
public void GetDesignation(ConcreateElementGetDesignation指定)
{
Console.WriteLine( WIPRO:Designation Developer);
}
}
class ConcreateVisitorTcs:IVisitor
{
public void GetLocation(ConcreateElementGetLocation location)
{
Console.WriteLine( TCS:Location UK);
}
public void GetPackage(ConcreateElementGetPackage包)
{
Console.WriteLine( TCS:Package 20 Lakhs);
}
public void GetDesignation(ConcreateElementGetDesignation指定)
{
Console.WriteLine( TCS:Designation Tester);
}
}
class ConcreateVisitorInfo:IVisitor
{
public void GetLocation(ConcreateElementGetLocation location)
{
Console.WriteLine( INFO:Lcation UK);
}
public void GetPackage(ConcreateElementGetPackage)包)
{
Console.WriteLine( INFO:package 10 lakhs );
}
public void GetDesignation(ConcreateElementGetDesignation指定)
{
Console.WriteLine( INFO:Designation Architect);
}
}
}
元素
命名空间 Visitorpattern3
{
interface IElement
{
void 接受(IVisitor visitor);
}
}
具体元素
命名空间 Visitorpattern3
{
类 ConcreateElementGetLocation:IElement
{
public void 接受(IVisitor访客)
{
visitor.GetLocation( this );
}
}
class ConcreateElementGetPackage:IElement
{
public void 接受(IVisitor访客)
{
visitor.GetPackage(此跨度>);
}
}
class ConcreateElementGetDesignation:IElement
{
public void 接受(IVisitor访客)
{
visitor.GetDesignation( this 跨度>);
}
}
}
计划
命名空间 Visitorpattern3
{
class 计划
{
静态 void Main( string [] args)
{
var objlist = new 列表< IElement>
{
new ConcreateElementGetDesignation(),
new ConcreateElementGetLocation() ,
new ConcreateElementGetPackage()
};
ConcreateVisitorWipro wipro = new ConcreateVisitorWipro();
ConcreateVisitorTcs tcs = new ConcreateVisitorTcs();
ConcreateVisitorInfo info = new ConcreateVisitorInfo();
foreach (IElement ieleElement in objlist)
{
ieleElement.Accept(wipro);
ieleElement.Accept(tcs);
ieleElement.Accept(info);
}
Console.ReadLine();
}
}
}
这是正确的吗?如果不是我错在哪里?
class 程序
{
静态 void Main( string [] args)
{
var objlist = new 列表< IElement>
{
new TcsDesignation(),
new WiproLocation() ,
new InfoPackage(),
new InfoDesignation(),
new TcsLocation(),
new TcsPackage()
};
ITCompanyVisitor visitor = new ITCompanyVisitor();
foreach (IElement ieleElement in objlist)
{
ieleElement.Accept(访客);
}
}
}
摘要 类访问者
{
public abstract void GetLocation(TcsLocation location);
public abstract void GetLocation (WiproLocation位置);
public abstract void GetLocation (InfoLocation位置);
public abstract void GetPackage(TcsPackage包);
public abstract void GetPackage (WiproPackage包);
public abstract void GetPackage (InfoPackage包);
public abstract void GetDesignation(TcsDesignation指定);
public abstract void GetDesignation (WiproDesignation指定);
public abstract void GetDesignation (InfoDesignation指定);
}
class ITCompanyVisitor:访客
{
void GetLocation(TcsLocation location)
{
}
void GetLocation(WiproLocation位置)
{
}
void GetLocation(InfoLocation location)
{
}
void GetPackage(TcsPackage包)
{
}
void GetPackage(WiproPackage包)
{
}
void GetPackage(InfoPackage包)
{
}
void GetDesignation(TcsDesignation des点燃)
{
}
void GetDesignation(WiproDesignation指定)
{
}
void GetDesignation(InfoDesignation指定)
{
}
}
interface IElement
{
void 接受(访客访客);
}
class TcsLocation:IElement
{
public void 接受(访客访问者)
{
visitor.GetLocation(此跨度>);
}
}
class TcsPackage:IElement
{
public void 接受(访客访客)
{
visitor.GetPackage(此跨度>);
}
}
class TcsDesignation:IElement
{
public void 接受(访客访问者)
{
visitor.GetDesignation( this 跨度>);
}
}
class WiproLocation:IElement
{
< span class =code-keyword> public void 接受(访客访问者)
{
visitor.GetLocation(此跨度>);
}
}
class WiproPackage:IElement
{
public void 接受(访客访客)
{
visitor.GetPackage(此跨度>);
}
}
class WiproDesignation:IElement
{
public void 接受(访客访问者)
{
visitor.GetDesignation( this 跨度>);
}
}
class InfoLocation:IElement
{
public void 接受(访客访客)
{
visitor.GetLocation(此跨度>);
}
}
class InfoPackage:IElement
{
public void 接受(访客访客)
{
visitor.GetPackage(此跨度>);
}
}
class InfoDesignation:IElement
{
public void 接受(访客访问者)
{
visitor.GetDesignation( this 跨度>);
}
}
}
Learning Visitor pattern C#: It will be glad if anyone can verify the code which i have written below is following visitor design pattern.
Visitor
namespace Visitorpattern3
{
interface IVisitor
{
void GetLocation(ConcreateElementGetLocation location);
void GetPackage(ConcreateElementGetPackage package);
void GetDesignation(ConcreateElementGetDesignation designation);
}
}
Concrete visitor
namespace Visitorpattern3
{
class ConcreateVisitorWipro:IVisitor
{
public void GetLocation(ConcreateElementGetLocation location)
{
Console.WriteLine("WIPRO: Location Bnagalore");
}
public void GetPackage(ConcreateElementGetPackage package)
{
Console.WriteLine("WIPRO: Package 8 Lakhs");
}
public void GetDesignation(ConcreateElementGetDesignation designation)
{
Console.WriteLine("WIPRO: Designation Developer");
}
}
class ConcreateVisitorTcs : IVisitor
{
public void GetLocation(ConcreateElementGetLocation location)
{
Console.WriteLine("TCS: Location UK");
}
public void GetPackage(ConcreateElementGetPackage package)
{
Console.WriteLine("TCS: Package 20 Lakhs");
}
public void GetDesignation(ConcreateElementGetDesignation designation)
{
Console.WriteLine("TCS: Designation Tester");
}
}
class ConcreateVisitorInfo : IVisitor
{
public void GetLocation(ConcreateElementGetLocation location)
{
Console.WriteLine("INFO: Lcation UK");
}
public void GetPackage(ConcreateElementGetPackage package)
{
Console.WriteLine("INFO: package 10 lakhs");
}
public void GetDesignation(ConcreateElementGetDesignation designation)
{
Console.WriteLine("INFO: Designation Architect");
}
}
}
Element
namespace Visitorpattern3
{
interface IElement
{
void Accept(IVisitor visitor);
}
}
Concrete element
namespace Visitorpattern3
{
class ConcreateElementGetLocation:IElement
{
public void Accept(IVisitor visitor)
{
visitor.GetLocation(this);
}
}
class ConcreateElementGetPackage : IElement
{
public void Accept(IVisitor visitor)
{
visitor.GetPackage(this);
}
}
class ConcreateElementGetDesignation : IElement
{
public void Accept(IVisitor visitor)
{
visitor.GetDesignation(this);
}
}
}
Program
namespace Visitorpattern3
{
class Program
{
static void Main(string[] args)
{
var objlist = new List<IElement>
{
new ConcreateElementGetDesignation(),
new ConcreateElementGetLocation(),
new ConcreateElementGetPackage()
};
ConcreateVisitorWipro wipro = new ConcreateVisitorWipro();
ConcreateVisitorTcs tcs = new ConcreateVisitorTcs();
ConcreateVisitorInfo info = new ConcreateVisitorInfo();
foreach (IElement ieleElement in objlist)
{
ieleElement.Accept(wipro);
ieleElement.Accept(tcs);
ieleElement.Accept(info);
}
Console.ReadLine();
}
}
}
Is this correct ? If not where i went wrong?
class Program { static void Main(string[] args) { var objlist = new List<IElement> { new TcsDesignation(), new WiproLocation(), new InfoPackage(), new InfoDesignation(), new TcsLocation(), new TcsPackage() }; ITCompanyVisitor visitor = new ITCompanyVisitor(); foreach (IElement ieleElement in objlist) { ieleElement.Accept(visitor); } } } abstract class Visitor { public abstract void GetLocation(TcsLocation location); public abstract void GetLocation(WiproLocation location); public abstract void GetLocation(InfoLocation location); public abstract void GetPackage(TcsPackage package); public abstract void GetPackage(WiproPackage package); public abstract void GetPackage(InfoPackage package); public abstract void GetDesignation(TcsDesignation designation); public abstract void GetDesignation(WiproDesignation designation); public abstract void GetDesignation(InfoDesignation designation); } class ITCompanyVisitor : Visitor { void GetLocation(TcsLocation location) { } void GetLocation(WiproLocation location) { } void GetLocation(InfoLocation location) { } void GetPackage(TcsPackage package) { } void GetPackage(WiproPackage package) { } void GetPackage(InfoPackage package) { } void GetDesignation(TcsDesignation designation) { } void GetDesignation(WiproDesignation designation) { } void GetDesignation(InfoDesignation designation) { } } interface IElement { void Accept(Visitor visitor); } class TcsLocation : IElement { public void Accept(Visitor visitor) { visitor.GetLocation(this); } } class TcsPackage : IElement { public void Accept(Visitor visitor) { visitor.GetPackage(this); } } class TcsDesignation : IElement { public void Accept(Visitor visitor) { visitor.GetDesignation(this); } } class WiproLocation : IElement { public void Accept(Visitor visitor) { visitor.GetLocation(this); } } class WiproPackage : IElement { public void Accept(Visitor visitor) { visitor.GetPackage(this); } } class WiproDesignation : IElement { public void Accept(Visitor visitor) { visitor.GetDesignation(this); } } class InfoLocation : IElement { public void Accept(Visitor visitor) { visitor.GetLocation(this); } } class InfoPackage : IElement { public void Accept(Visitor visitor) { visitor.GetPackage(this); } } class InfoDesignation : IElement { public void Accept(Visitor visitor) { visitor.GetDesignation(this); } } }
这篇关于访客模式C#:如果任何人都可以验证我在下面编写的代码遵循访客设计模式,那将会很高兴。(新代码))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!