观察者模式生活中的一个应用
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();
}
}
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();
}
}
相关文章推荐
- 安卓开发观察者模式应用-一个service通知多个activity更新ui的实现
- js设计模式之观察者模式的应用
- 用观察者模式设计一个交通信号灯调度系统
- 生活中的观察者模式——一壶水的故事
- ListView的观察者模式的应用,以及调用notifyDataSetChanged()方法时,为什么会刷新ListView
- jdk的PropertyChangeSupport属性值修改的观察者模式应用
- 一天一个设计模式之观察者模式
- 设计模式实战应用之二:观察者模式
- 观察者模式在交易系统中的应用
- 介绍一个款可以在javascript对象上实现观察者模式的类库-Watch.js
- AAAspring事件驱动模型--观察者模式在spring中的应用
- 只输出匹配的模式--正则表达式的一个应用
- android开发中观察者模式的实际应用
- 【 应用以及剖析】之 java.util.Observer 观察者模式实现
- jdk的PropertyChangeSupport属性值修改的观察者模式应用
- 每天一个设计模式之观察者模式
- php设计模式之观察者模式的应用详解
- 设计模式在游戏中的应用--观察者模式(十)
- js中观察者模式的应用
- Java设计模式之观察者模式的应用--简单的事件通知工具