• 观察者模式生活中的一个应用


    场景:当公司每个月向你支付工资的时候,将会向你发送一条短信通知

    Step1:首先,我们需要定义一个委托,通过委托将两个类的交互进行了绑定,当公司转账的方法Gapes()调用后,触发委托类型的SaveMoney事件,而该事件将被委托给用户(User)的通知(Notify)方法处理

    // <summary>
       ///定义代理
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
       public delegate void DelegateMonitorCustomer(object sender, CustomerEventArgs e);
      
        /// <summary>
        /// 银行卡
        /// </summary>
       public class Account
        {
           /// <summary>
           /// 转帐人姓名
           /// </summary>
           public string  Sender { get; set; }
           //转账金额
           public  decimal Money { get; set; }

           public event DelegateMonitorCustomer SaveMoney;
           public void Gapes()
           {
               CustomerEventArgs e = new CustomerEventArgs();
               e.Sender = this.Sender;
               e.Money = this.Money;
               SaveMoney(this, e);
           }
          
        }

       public class CustomerEventArgs : EventArgs
       {
           public string Sender { get; set; }
           public decimal Money { get; set; }
       }

    public class User
        {
           public void Notify(object sender,CustomerEventArgs e)
           {
               StringBuilder resutl = new StringBuilder();
               resutl.Append(e.Sender+"向您的卡中转入"+e.Money+"元钱");
               resutl.Append("时间:" + DateTime.Now.ToString());
               Console.WriteLine(resutl);

           }
        
        }

      class Program
        {
            static void Main(string[] args)
            {
                Account account = new Account();
                account.Sender = "爱施德股份";
                account.Money = 5000;
                User box=new User();
                account.SaveMoney+=new DelegateMonitorCustomer(box.Notify);
                account.Gapes();
            }

         
        }

    该文章经过本人整理所得,欢迎转载,转载时请加上本文地址;本文基于署名 2.5 中国大陆许可协议发布,请勿演绎或用于商业目的,但是必须保留本文的署名张志涛(包含链接如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    Java正则表达式学习 贪婪 勉强 侵占
    HTML meta
    URLConnection类
    Sql Server 查看所有存储过程或视图的位置及内容
    创建你的第一个游戏Pong——挑战:改进您的Pong游戏
    解决锚点在IE8中失效
    辅助类——掌握内容管道
    辅助类——随机函数(RandomHelper)辅助类
    创建你的第一个游戏Pong——疑难解答
    辅助类——概览
  • 原文地址:https://www.cnblogs.com/zhangzt/p/3079193.html
Copyright © 2020-2023  润新知