委托可以以松散的耦合性使两个对象相互调用.
   应用中也就是A类干活.干到一半了,需要B类协助,然后继续执行.
   利用委托使类干的活可以单一化.需要别的类配合时只需执行一
   个委托.不必关心配合类是怎样工作的.
   比如:
   A人要从停车厂开走车,开到大门时发现大门锁了,通知B人去开门.
   B人去开门并告知门A人已经打开了.
   这时A人再开走车.
   A只管开车和说声"快点开门"
   B只管开门.
   
   class Oven
    {
        public delegate void DelegateOnTemperature(int temperature);
       
        private int _temperature;
        private DelegateOnTemperature _listener;

        public void BroadcastTemperature()
        {
            _listener(_temperature);
        }

        public void AddTemperatureListener(DelegateOnTemperature listener)
        {
            _listener += listener;
        }
   }

    class Controler
    {
        public Controler(Oven oven)
        {
            oven.AddTemperatureListener(new Oven.DelegateOnTemperature(this.OnTemperature));
        }

        public void OnTemperature(int temperature)
        {
            Console.WriteLine("Temperature(" + temperature + ")");
        }
    }

posted on 2009-03-30 11:15  雨季  阅读(210)  评论(0编辑  收藏  举报