设计模式(3)-访问者模式

模拟不同身份打开窗体,实现不同的功能:

class Program
    {
        static void Main(string[] args)
        {
            FORM f = new FORM();
            Visitor v1 = new AdminVisitor();
            Visitor v2 = new UserVisitor();

            f.Accept(v1);         

            f.button = "aaa";

            f.button_OnClick();
        }
    }
    public class FORM
    {
        private Visitor visitor;

        public string button { get; set; }    

        public void Accept(Visitor v)
        {
            this.visitor = v;
            this.visitor.Visit(this);
        }

        public void FORM_OnLoad()
        {
            this.visitor.FORM_OnLoad();
        }


        public void button_OnClick()
        {
            this.visitor.button_OnClick();
        }
    }
    public abstract class Visitor
    {
        protected FORM FORM;
     
        public void Visit(FORM f)
        {
            this.FORM = f;
        }

        public abstract void FORM_OnLoad();

        public abstract void button_OnClick();
    }

    public class UserVisitor : Visitor
    {
       
        public override void FORM_OnLoad()
        {
        }

        public override void button_OnClick()
        {
            Console.WriteLine("UserVisitor:" + base.FORM.button.ToString());
        }
    }

    public class AdminVisitor : Visitor
    {

        public override void FORM_OnLoad()
        {           
        }

        public override void button_OnClick()
        {
            Console.WriteLine("AdminVisitor:" + base.FORM.button.ToString());
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_34520411/article/details/82784955