设计模式---访问者模式

  • 模拟不同身份打开窗体,实现不同的功能:
    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());
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碰碰qaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值