C#委托和事件详解(9)

来源:百度文库 编辑:神马文学网 时间:2024/04/28 15:12:47

委托、事件与Observer设计模式

范例说明

上面的例子已不足以再进行下面的讲解了,我们来看一个新的范例,因为之前已经介绍了很多的内容,所以本节的进度会稍微快一些:

假设我们有个高档的热水器,我们给它通上电,当水温超过95度的时候:1、扬声器会开始发出语音,告诉你水的温度;2、液晶屏也会改变水温的显示,来提示水已经快烧开了。

现在我们需要写个程序来模拟这个烧水的过程,我们将定义一个类来代表热水器,我们管它叫:Heater,它有代表水温的字段,叫做temperature;当然,还有必不可少的给水加热方法BoilWater(),一个发出语音警报的方法MakeAlert(),一个显示水温的方法,ShowMsg()。

以下是引用片段:
   namespaceDelegate{
   classHeater{
   privateinttemperature;//水温
   //烧水
   publicvoidBoilWater(){
   for(inti=0;i<=100;i++){
   temperature=i;
   if(temperature>95){
   MakeAlert(temperature);
   ShowMsg(temperature);
   }
   }
   }
   //发出语音警报
   privatevoidMakeAlert(intparam){
   Console.WriteLine("Alarm:嘀嘀嘀,水已经{0}度了:",param);
   }
   //显示水温
   privatevoidShowMsg(intparam){
   Console.WriteLine("Display:水快开了,当前温度:{0}度。",param);
   }
   }
   classProgram{
   staticvoidMain(){
   Heaterht=newHeater();
   ht.BoilWater();
   }
   }
   }