zoukankan      html  css  js  c++  java
  • demo for Event code

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace EventDemo
    {
        delegate void TemperatureChangedEventHandle(object sender, BoiledWaterEventArgs args);
        class Program
        {
            static void Main(string[] args)
            {
                Heater ht = new Heater();
                Monitor mt = new Monitor();
                ht.TemperatureChanged += new TemperatureChangedEventHandle(Monitor.MonitorTemperature);
                ht.PowerOn();
            }
        }
        class Heater
        {
            public Heater()
            {
                Type = "强力热得快";
                Area = "Made in China, Made by Trump";
            }
            private int _temperature;
            public event TemperatureChangedEventHandle TemperatureChanged;
            public string Type
            {
                get;
                private set;
            }
            public string Area
            {
                get;
                private set;
            }
            public bool IsOnPower
            {
                get;
                private set;
            }
            public void PowerOff()
            {
                IsOnPower = false;
                string s = new string('*'50);
                Console.WriteLine("我的电源被拔掉了,现在温度开始下降,Type:{0},Area:{1}", Type, Area);
                Console.WriteLine(s);
                System.Threading.Thread.Sleep(500);
                while (_temperature > 0)
                {
                    _temperature--;
                    System.Threading.Thread.Sleep(500);
                    TemperatureChanged(thisnew BoiledWaterEventArgs { Temperature = _temperature,Type=this.Type,Area = this.Area});
                }
            }
            public void PowerOn()
            {
                IsOnPower = true;
                string s = new string('*'50);
                Console.WriteLine("我开始烧水了我的信息,Type:{0},Area:{1}", Type, Area);
                System.Threading.Thread.Sleep(500);
                Console.WriteLine(s);
                BoilWater();
            }
            private void BoilWater()
            {
                while (IsOnPower && _temperature < 100)
                {
                    _temperature++;
                    System.Threading.Thread.Sleep(200);
                    TemperatureChanged(thisnew BoiledWaterEventArgs { Temperature = _temperature, Type = this.Type, Area = this.Area });
                }
            }
        }
        class Monitor
        {
            public static void MonitorTemperature(object sender, BoiledWaterEventArgs args)
            {
                Heater ht = sender as Heater;
                int temperature = args.Temperature;
                if (null == ht)
                {
                    Console.WriteLine("这不是坑爹嘛,sender根本就不是热水器", temperature);
                    return;
                }
                if (temperature < 30)
                {
                    Console.WriteLine("水温也太低了.....浑身鸡皮疙瘩,温度:{0}", temperature);
                    if (!ht.IsOnPower)
                    {
                        ht.PowerOn();
                    }
                }
                else if (temperature >= 30 && temperature < 50)
                {
                    Console.WriteLine("水温刚好,很爽,温度:{0}", temperature);
                }
                else if (temperature >= 50 && temperature < 70)
                {
                    Console.WriteLine("有点烫,尚可忍受,权当蒸桑拿了,温度:{0}", temperature);
                }
                else if (temperature >= 70)
                {
                    Console.WriteLine("你想烫死哥啊,快关电源,温度:{0}", temperature);
                    if (ht.IsOnPower)
                    {
                        ht.PowerOff();
                    }
                }
            }
        }
        class BoiledWaterEventArgs : EventArgs
        {
            public int Temperature
            {
                get;
                set;
            }
            public string Type
            {
                get;
                set;
            }
            public string Area
            {
                get;
                set;
            }
        }
    }
  • 相关阅读:
    2016第41周二
    2016第41周一
    2016第40周日
    svn冲突
    海量数据搜索
    网页爬虫的设计与实现(Java版)
    Eclipse中使用正则表达式搜索替换
    nodpad++正则替换
    DWR3.0 dwr 返回值(数组,集合,Map)
    自己用反射写的一个request.getParameter工具类
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2283688.html
Copyright © 2011-2022 走看看