647
Chương 16: Các giao diện và mẫu thông dụng
// Phương thức thụ lý sự kiện thay đổi nhiệt độ.
public void TemperatureChange(Thermostat sender,
TemperatureChangeEventArgs temp) {
System.Console.WriteLine
("ChangeObserver: Old={0}, New={1}, Change={2}",
temp.OldTemperature, temp.NewTemperature,
temp.NewTemperature - temp.OldTemperature);
}
}
// Observer hiển thị thông tin về nhiệt dộ trung bình
// khi có một sự kiện thay đổi nhiệt độ xảy ra.
public class TemperatureAverageObserver {
// Sum chứa tổng các giá trị nhiệt độ.
// Count chứa số lần sự kiện thay đổi nhiệt độ xảy ra.
private int sum = 0, count = 0;
// Phương thức khởi dựng (nhận một tham chiếu đến đối tượng
// Thermostat cần được TemperatureAverageObserver giám sát).
public TemperatureAverageObserver (Thermostat t) {
// Tạo một thể hiện ủy nhiệm TemperatureEventHandler và
// đăng ký nó với Thermostat đã được chỉ định.
t.TemperatureChange +=
new TemperatureEventHandler(this.TemperatureChange);
}
// Phương thức thụ lý sự kiện thay đổi nhiệt độ.
public void TemperatureChange(Thermostat sender,
TemperatureChangeEventArgs temp) {
count++;
sum += temp.NewTemperature;
System.Console.WriteLine