千家信息网

C# Observer设计模式是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"C# Observer设计模式是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C# Observer设计模式是什么"吧!我们来
千家信息网最后更新 2026年11月03日C# Observer设计模式是什么

这篇文章主要讲解了"C# Observer设计模式是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C# Observer设计模式是什么"吧!

我们来看一个新的范例,因为有很多相关的内容,所以本文的进度会稍微快一些:

假设我们有个高档的热水器,我们给它通上电,当水温超过95度的时候:
1、扬声器会开始发出语音,告诉你水的温度;
2、液晶屏也会改变水温的显示,来提示水已经快烧开了。

现在我们需要写个程序来模拟这个烧水的过程,我们将定义一个类来代表热水器,我们管它叫: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();  }  }  }

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);  }  }

这里就出现了一个问题:如何在水烧开的时候通知报警器和显示器?在继续进行之前,我们先了解一下C# Observer设计模式,C# Observer设计模式中主要包括如下两类对象:

1. Subject:监视对象,它往往包含着其他对象所感兴趣的内容。在本范例中,热水器就是一个监视对象,它包含的其他对象所感兴趣的内容,就是temprature字段,当这个字段的值快到100时,会不断把数据发给监视它的对象。
2. Observer:监视者,它监视Subject,当Subject中的某件事发生的时候,会告知Observer,而Observer则会采取相应的行动。在本范例中,Observer有警报器和显示器,它们采取的行动分别是发出警报和显示水温。

在本例中,事情发生的顺序应该是这样的:

1. 警报器和显示器告诉热水器,它对它的温度比较感兴趣(注册)。
2. 热水器知道后保留对警报器和显示器的引用。
3. 热水器进行烧水这一动作,当水温超过95度时,通过对警报器和显示器的引用,自动调用警报器的MakeAlert()方法、显示器的ShowMsg()方法。

类似这样的例子是很多的,GOF对它进行了抽象,称为C# Observer设计模式:C# Observer设计模式是为了定义对象间的一种一对多的依赖关系,以便于当一个对象的状态改变时,其他依赖于它的对象会被自动告知并更新。Observer模式是一种松耦合的设计模式。

感谢各位的阅读,以上就是"C# Observer设计模式是什么"的内容了,经过本文的学习后,相信大家对C# Observer设计模式是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

警报 模式 设计模式 设计 水温 热水 热水器 C# 对象 显示器 警报器 内容 方法 监视 温度 例子 兴趣 字段 就是 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南咖啡 互联网科技企业 山东特亿宝互联网科技有限公司 中关村互联网 科技集团 科技金融是不是互联网金融 互联网 科技创业 互联网未来科技 电子科技大学互联网 互联网科技公司名称 广西拼得多互联网科技有限公司 哈尔滨秒房互联网科技有限公司 互联网和高科技公司 互联网科技热点资讯 成都互联网科技公司工作好不好 迪庆互联网科技招生 烟台灵鸽互联网科技有限公司 产业互联网科技服务公司 九思连强互联网电子科技有限公司 互联网的科技体现在哪里 保山浩联互联网科技有限公司 互联网新科技 互联网科技公司介绍 金融科技和互联网金融 衡水科技产业互联网平台 山东吉时兔互联网科技有限公司 欧洲十大科技互联网公司 苏州五指互联网络科技有限 从那以后互联网科技有限公司 科技互联网经济论坛 广州三三互联网科技有限公司
0