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

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

     編輯:關於C語言

Observer 設計模式簡介

假設熱水器由熱水器本體、警報器、顯示器三廠商組裝而成。熱水器僅負責燒水,不發警報不顯示溫度;水快燒開時由警報器報警、顯示器提示。此時類別結構應解耦:

public class Heater {
    private int temperature;
    private void BoilWater() {
        for (int i = 0; i <= 100; i++) temperature = i;
    }
}
public class Alarm {
    private void MakeAlert(int param) {
        Console.WriteLine("Alarm:嘀嘀嘀,水已經 {0} 度了:", param);
    }
}
public class Display {
    private void ShowMsg(int param) {
        Console.WriteLine("Display:水已燒開,當前溫度:{0}度。", param);
    }
}

問題:水燒開時如何通知警報器與顯示器?

Observer 模式包含兩類角色:

  • Subject(監視對象):包含他人關注的狀態。本例中 Heater 為 Subject,temperature 為關注點
  • Observer(監視者):監視 Subject,狀態變化時採取行動。本例中 Alarm、Display 為 Observer

這為委托/事件解決耦合問題奠定概念基礎。

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