委托模拟监控设备
今天下午没事儿,写了一个模拟公司监控设备的例子,以加深自己对托管的理解。设想是某小偷去某公司行窃却被警察逮个正着。
/// <summary>
/// 事件信息类
/// </summary>
public class StealEvemtArgs:EventArgs
{
private string point=string.Empty;
private string who=string.Empty;
public string Point
{
set { point = value; }
get{return point;}
}
public string Who
{
set { who = value; }
get{return who;}
}
}
/// <summary>
/// 监控设备
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public delegate void CashMonitor(Object sender,StealEvemtArgs e);
/// <summary>
/// 公司
/// </summary>
public class Company
{
public event CashMonitor CasStolen;//给公司装上监控设备
private int cash=300000;//公司现金
private readonly string address;//公司地址
/// <summary>
/// 构造函数
/// </summary>
/// <param name="address">公司地址</param>
public Company(string address)
{
this.address = address;
}
public void Stolen(int stealamount,string who)
{
StealEvemtArgs e = new StealEvemtArgs();
e.Point = address;
e.Who = who;
cash -= stealamount;
Console.WriteLine(address+":有贼偷走了{0}RMB,快叫警察!", stealamount);
CasStolen(this, e);//监控设备通知警察
}
}
/// <summary>
/// 小偷
/// </summary>
public class Thief
{
private Company company;
private string name=string.Empty;
private int ToSteal;
public string Name
{
get { return name; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="tosteal">要偷多少呢?</param>
/// <param name="name">姓名</param>
/// <param name="company">作案目标,“一般人儿我不告诉他”</param>
public Thief(int tosteal,string name,Company company)
{
this.company = company;
this.ToSteal = tosteal;
this.name=name;
}
public void Steal()
{
company.Stolen(ToSteal,name);
}
}
/// <summary>
/// 警察局在一座城市只有一家,所一定义成static
/// </summary>
public static class PoliceStation
{
public static void ReciveWarning(Object sender,StealEvemtArgs e)
{
Console.WriteLine("警察局:接到报警,火速赶往" + e.Point + ",抓捕"+e.Who+"!!");
}
}
class Program
{
static void Main(string[] args)
{
Company company = new Company("XX路XX公司");//有个XX公司,在XX路
company.CasStolen += new CashMonitor(PoliceStation.ReciveWarning);//XX公司监控设备和警察局接通
Thief thief = new Thief(3000, "陈小二",company);//有个小贼叫陈小二
thief.Steal();//陈小二开始工作
Console.Read();
}
}
/// 事件信息类
/// </summary>
public class StealEvemtArgs:EventArgs
{
private string point=string.Empty;
private string who=string.Empty;
public string Point
{
set { point = value; }
get{return point;}
}
public string Who
{
set { who = value; }
get{return who;}
}
}
/// <summary>
/// 监控设备
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public delegate void CashMonitor(Object sender,StealEvemtArgs e);
/// <summary>
/// 公司
/// </summary>
public class Company
{
public event CashMonitor CasStolen;//给公司装上监控设备
private int cash=300000;//公司现金
private readonly string address;//公司地址
/// <summary>
/// 构造函数
/// </summary>
/// <param name="address">公司地址</param>
public Company(string address)
{
this.address = address;
}
public void Stolen(int stealamount,string who)
{
StealEvemtArgs e = new StealEvemtArgs();
e.Point = address;
e.Who = who;
cash -= stealamount;
Console.WriteLine(address+":有贼偷走了{0}RMB,快叫警察!", stealamount);
CasStolen(this, e);//监控设备通知警察
}
}
/// <summary>
/// 小偷
/// </summary>
public class Thief
{
private Company company;
private string name=string.Empty;
private int ToSteal;
public string Name
{
get { return name; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="tosteal">要偷多少呢?</param>
/// <param name="name">姓名</param>
/// <param name="company">作案目标,“一般人儿我不告诉他”</param>
public Thief(int tosteal,string name,Company company)
{
this.company = company;
this.ToSteal = tosteal;
this.name=name;
}
public void Steal()
{
company.Stolen(ToSteal,name);
}
}
/// <summary>
/// 警察局在一座城市只有一家,所一定义成static
/// </summary>
public static class PoliceStation
{
public static void ReciveWarning(Object sender,StealEvemtArgs e)
{
Console.WriteLine("警察局:接到报警,火速赶往" + e.Point + ",抓捕"+e.Who+"!!");
}
}
class Program
{
static void Main(string[] args)
{
Company company = new Company("XX路XX公司");//有个XX公司,在XX路
company.CasStolen += new CashMonitor(PoliceStation.ReciveWarning);//XX公司监控设备和警察局接通
Thief thief = new Thief(3000, "陈小二",company);//有个小贼叫陈小二
thief.Steal();//陈小二开始工作
Console.Read();
}
}

浙公网安备 33010602011771号