访客模式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))

查看:93
本文介绍了访客模式C#:如果任何人都可以验证我在下面编写的代码遵循访客设计模式,那将会很高兴。(新代码))的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

学习访客模式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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆