学习大话设计模式改编,为了记录一下。。脑子不好使。。。总忘记。。特在这里备案。官方解说很多,这里也难得贴了,直接代码。。开始:
1.建一个控制台项目,先建类
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
class Cat
{
private string _name;
public Cat(string name)
{
this._name = name;
}
public delegate void CatShouEventHandler();//声明委托CatShouEventHandler
public event CatShouEventHandler CatShout;//声明事件CatShout,它的事件类型是委托CatShouEventHandler
public void Shout()
{
Console.WriteLine("喵,我是{0},上班时间在做什么- -||",_name);
if (CatShout !=null )
{
CatShout();//声明当执行Shout()方法时,如果CatShout中有对象登记事件,则执行CatShout()
}
}
}
=====================
class Mouse
{
private string _name;
public Mouse(string name)
{
this._name = name;
}
public void Run()
{
Console.WriteLine("老猫老了!{0},快关魔兽世界,切换桌面。。GO。快跑!",_name );
}
}
============================
static void Main(string[] args)
{
Cat cat = new Cat("自然");
Mouse mouse1 = new Mouse("夸大");
Mouse mouse2 = new Mouse("AI");
Mouse mouse3 = new Mouse("猎人");
cat.CatShout +=new Cat.CatShouEventHandler(mouse1 .Run );//其中“+=”表示“add_CatShout”的间思。表示将Mouse类中的Run 方法通过实例化委托Cat.CatShouEventHandler登记到Cat的事件CatShout当中。
cat.CatShout +=new Cat.CatShouEventHandler(mouse2.Run);
cat.CatShout +=new Cat.CatShouEventHandler(mouse3.Run);
cat.Shout();
Console.Read();
}