设计模式:观察者模式(二)——C#内置接口实现观察者模式
2021-02-07 20:16
标签:spl demo public 数据 list 泛型接口 传递 virt 注册 1. 接口介绍 C#内部提供了IObservable 2. Demo背景 这里与上一篇一致:设计一个气象观测站,测量温度、湿度、气压等,会有多种公告板如气温布告板,舒适度布告板,天气预报布告板等等。每当天气数据变化时,这些布告板的数据就需要相应自动更新。 3. 代码设计 4. 源码地址 https://github.com/DonyGu/DesignPatterns 设计模式:观察者模式(二)——C#内置接口实现观察者模式 标签:spl demo public 数据 list 泛型接口 传递 virt 注册 原文地址:https://www.cnblogs.com/donyblog/p/11373057.html通过C#的内置观察者接口实现观察者模式
//T:提供通知信息的对象。
public interface IObservable
//T:提供通知信息的对象。
public interface IObserver
public struct WeatherData
{
private float temperature;
private float humidity;
private float pressure;
public float Temperature { get => temperature; }
public float Humidity { get => humidity; }
public float Pressure { get => pressure; }
public void SetMessureMents(float temperature, float humidity, float pressure)
{
this.temperature = temperature;
this.humidity = humidity;
this.pressure = pressure;
}
}
public class WeatherDataProvider : IObservable
public class Display : IObserver
class Program
{
static void Main(string[] args)
{
WeatherData weather = new WeatherData();
WeatherDataProvider provider = new WeatherDataProvider();
Display display1 = new Display("布告板1");
Display display2 = new Display("布告板2");
Console.WriteLine("---------加入布告板1---------");
display1.Subscribe(provider);
weather.SetMessureMents(20,20,20);
provider.SendWeatherData(weather);
Console.WriteLine("---------加入布告板2---------");
display2.Subscribe(provider);
weather.SetMessureMents(30, 30, 30);
provider.SendWeatherData(weather);
Console.WriteLine("----------取消布告板1----------");
display1.Unsubscribe();
weather.SetMessureMents(23, 23, 23);
provider.SendWeatherData(weather);
Console.WriteLine("运行结束");
Console.ReadLine();
}
}
文章标题:设计模式:观察者模式(二)——C#内置接口实现观察者模式
文章链接:http://soscw.com/index.php/essay/52317.html