首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 委托與事件詳解(九)

     編輯:關於C語言

委托、事件與 Observer 設計模式

新範例:高階熱水器,水溫超過 95 度時揚聲器語音報溫、液晶屏顯示提示。定義 Heater 類含 temperature 欄位、BoilWater()、MakeAlert()、ShowMsg():

namespace Delegate {
    class Heater {
        private int temperature;
        public void BoilWater() {
            for (int i = 0; i <= 100; i++) {
                temperature = i;
                if (temperature > 95) {
                    MakeAlert(temperature);
                    ShowMsg(temperature);
                }
            }
        }
        private void MakeAlert(int param) {
            Console.WriteLine("Alarm:嘀嘀嘀,水已經 {0} 度了:", param);
        }
        private void ShowMsg(int param) {
            Console.WriteLine("Display:水快開了,當前溫度:{0}度。", param);
        }
    }
    class Program {
        static void Main() {
            Heater ht = new Heater();
            ht.BoilWater();
        }
    }
}

此版本將警報與顯示邏輯硬編碼在 Heater 內,違反單一職責與開放封閉原則,為引入委托/事件解耦做鋪墊。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved