新範例:高階熱水器,水溫超過 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 內,違反單一職責與開放封閉原則,為引入委托/事件解耦做鋪墊。