zoukankan      html  css  js  c++  java
  • 观察者模式生活中的一个应用

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

    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 中国大陆许可协议发布,请勿演绎或用于商业目的,但是必须保留本文的署名张志涛(包含链接如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    什么是CMS
    TP3.2项目—微信推广页
    《实用技巧》——让你的网站变成响应式的3个简单步骤
    thinkphp分页带数据
    tp框架表单验证 及ajax
    tp框架做留言板
    随时修改添加,thinkphp小知识
    thinkphp使用ajax
    thinkphp修改和删除数据
    tp框架查询
  • 原文地址:https://www.cnblogs.com/zhangzt/p/3079193.html
Copyright © 2011-2022 走看看