描述情景:利用代理委托和事件我們處理 老板 員工 包含的動(dòng)作 買(mǎi)煙 漲工資
實(shí)現(xiàn):老板要抽煙需要買(mǎi)煙會(huì)讓員工去買(mǎi)煙用含,然后就給員工漲工資.
Boss
class Boss
{
public delegate void BuySmokeHandle(Boss boss, Employee em);
//定義老板抽煙的事件
public event BuySmokeHandle smokehandler;
public string name;
public Boss()
{
name = "老板";
//注冊(cè)抽煙事件 交由哪個(gè)函數(shù)來(lái)處理
//調(diào)用方式1: 可以注釋行 97
// smokehandler += new BuySmokeHandle(smokeevent);
}
public void asksmoke(Employee em)
{
if (this.smokehandler != null)
{
BuySmokeHandle hander = new BuySmokeHandle(em.buysomke);
hander(this, em);
}
}
public virtual void smokeevent(Boss boss,Employee emname)
{
Console.WriteLine("e:{0}給b:{1}買(mǎi)的煙抽完了,{2}你很不錯(cuò) //事件的使用", emname.name, boss.name,emname.name);
//因此我決定還可以多做一些事情,在抽到煙過(guò)后 ,小王 你的工資張拉
emname.slary = 8000;
}
}
Empoyee
class Employee
{
public double slary
{
get; set;
}
public string name
{
get; set;
}
public Employee()
{
name = "員工";
}
public void buysomke(Boss boss,Employee emnamme)
{
Console.WriteLine("e:{0}給b:{1}買(mǎi)了煙 //代理方式讓下屬買(mǎi)煙",emnamme.name,boss.name);
//讓買(mǎi)到煙 老板 就要去抽煙
boss.smokeevent(boss, emnamme);
}
}
調(diào)用
Boss boss = new Boss();
boss.name = "張與";
Employee em = new Employee();
em.name = "小王";
//方式2: 可以注釋35
boss.smokehandler += new Boss.BuySmokeHandle(boss.smokeevent);
boss.asksmoke(em);
Console.WriteLine("{0}的工資漲到了{(lán)1}",em.name, em.slary);
Console.ReadLine();