您的位置:首页 > 其它

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

2013-05-15 09:34 274 查看
场景:当公司每个月向你支付工资的时候,将会向你发送一条短信通知

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: