• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#观察者模式(Observer Pattern)实例教程

C#观察者模式(Observer Pattern)实例教程

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#观察者模式,观察者模式,我的世界观察者模式,观察者模式java,android 观察者模式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文以实例形式简单讲述了C#观察者模式,分享给大家供大家参考。具体实现方法如下:

现在假设有一个软件公司,每当有新产品推出,就把信息通知到一些客户。

把通知这个动作抽象成一个接口。代码如下所示:

public interface IService
{
    void Notif();
}

</div>

客户如果想获得通知,就需要实现以上的接口。这里的客户被看作是观察者。

public class CustomerA : IService
{
    public void Notif()
    {
      Console.WriteLine("客户A收到通知了~~");
    }
}
public class CustomerB : IService
{
    public void Notif()
    {
      Console.WriteLine("客户B收到通知了~~");
    }
}

</div>

作为软件公司来讲,维护着一个客户的集合,并提供注册、取消注册的方法,往这个集合添加或删除客户。每当有通知的时候,就遍历客户集合,让IService执行通知。软件公司可以看作是一个被观察对象,或者说是发起动作的源头。

public class MyCompany
{
    private IList<IService> subscribers = new List<IService>();
    public void Subscribe(IService subscriber)
    {
      subscribers.Add(subscriber);
    }
    public void CancelSubscribe(IService subscriber)
    {
      subscribers.Remove(subscriber);
    }
    public void SendMsg()
    {
      foreach (IService service in subscribers)
      {
        service.Notif();
      }
    }
}

</div>

客户端创建软件公司实例、创建观察者实例、注册或取消观察者等。

class Program
{
    static void Main(string[] args)
    {
      MyCompany company = new MyCompany();
      IService customerA = new CustomerA();
      IService customerB = new CustomerB();
      company.Subscribe(customerA);
      company.Subscribe(customerB);
      company.SendMsg();
      Console.ReadKey();
    }
}

</div>

总结:

① 把一个通知的动作抽象成接口
② 观察者如果想接收到通知,就实现通知接口
③ 被观察对象做3件事情:维护观察者的集合,注册/取消观察者,发起动作遍历观察者集合让通知接口来做事

希望本文所述对大家C#程序设计的学习有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C# 设计模式系列教程-观察者模式
  • C#中观察者模式的3种实现方式
  • C#观察者模式(Observer Pattern)实例教程
  • C#中委托和事件在观察者模式中的应用实例
  • 简单的观察者模式示例分享
  • C# 观察者模式实例介绍

相关文章

  • 2017-05-28详谈C# 图片与byte[]之间以及byte[]与string之间的转换
  • 2017-05-28C# WinForm程序完全退出的问题解决
  • 2017-05-28C#控制台程序中处理2个关闭事件的代码实例
  • 2017-05-28C#词法分析器之输入缓冲和代码定位的应用分析
  • 2017-05-28c#消息提示框messagebox的详解及使用
  • 2017-05-28WinForm判断关闭事件来源于用户点击右上角“关闭”按钮的方法
  • 2017-05-28C#基于COM方式读取Excel表格的方法
  • 2017-05-28C#通过WIN32 API实现嵌入程序窗体
  • 2017-05-28C#中的try catch finally用法分析
  • 2017-05-28C#实现数据包加密与解密实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现图片上传与浏览切换的方法
    • C#使用linq查询大数据集的方法
    • C#遍历DataSet控件实例总结
    • C# 设计模式系列教程-抽象工厂模式
    • C#中变量、常量、枚举、预处理器指令知多少
    • C#正则表达式匹配HTML中的图片路径,图片地址代码
    • C#实现汉字转拼音或转拼音首字母的方法
    • 配置C#的系统环境变量的方法
    • C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
    • c#调用api控制windows关机示例(可以重启/注销)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有