委托模拟监控设备

今天下午没事儿,写了一个模拟公司监控设备的例子,以加深自己对托管的理解。设想是某小偷去某公司行窃却被警察逮个正着。

 

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

 

posted @ 2009-03-14 18:20  一人独钓  阅读(225)  评论(0)    收藏  举报