CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 647

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