• 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#教程 > 使用策略模式实现报警服务示例详解(短信报警)

使用策略模式实现报警服务示例详解(短信报警)

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

通过本文主要向大家介绍了创业策略的良好示例,mcgs定时器策略示例,ngui官网示例详解,winhex使用详解示例,焊接符号标注图解示例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

着重说一下策略模式。首先需要定义一个接口,该接口用来统一报警方法,代码如下:

大家伙看到Message会不会比较疑惑呢,别着急,Message就是我自己定义的一个报警的模型,比如报警标题,收件人(报警报给谁呢),报警方式(邮件、客户端等)等。

定义好接口之后,我们就要实现这个接口,实现这个接口的就是各种报警方式的类,比如EmailAlarm.cs和ClientAlarm.cs,下面是邮件报警的具体实现,EmailAlarm.cs的代码(需要实现IAlarm接口的Alarm方法):

下面是客户端报警的具体实现,ClientAlarm.cs(同样需要实现IAlarm接口的Alarm()方法)

好了,基础工作都做完,接下来我们面临的问题是我们该如何调用不同的报警实现呢?当然,在我们的报警模型Message中有报警方式这一字段,我们需要根据报警方式这个字段来发不同的报警。这个还不简单,我们根据不同的报警方式生成不同的对象,然后各自调用Alarm()方法就ok。当然,这是一种解决方法,但是这是最好的解决方法吗?of course not!听说过反射吗,小伙伴们?接下来,我将介绍如何利用反射来调用不同的报警方式:

   /// <summary>
   /// 通过发射,调用不同的报警方式
   /// </summary>
   public void HandleMessage(Message message)
   {
       foreach (AlarmWay way in Enum.GetValues(typeof(AlarmWay)))
       {
           //遍历所有的报警方式,每一种报警方式与message.AlarmWays进行按位与运算,如果运算结果仍然为当前遍历的报警方式,则说明Message中包含这种报警方式
           if ((message.AlramWays & way) == way)
           {
               try
               {
                   _alarmsDic[way].Alarm(message);
               }
               catch (Exception ex)
               {
                   //记录错误日志
               }
            }
       }
   }
}
</div>

看到AlarmWay是不是又混乱了呢?千万别乱,AlarmWay就是我定义的一个枚举类型,里面包含了各种报警方式,具体的代码我会在文章的最后贴出。我们现在还是着重讨论上面的代码,亲爱的小伙伴们,看到上面的静态构造函数了吗?知道为什么要这样写吗?我们在静态构造函数中利用反射将枚举中所有的报警对象保存在IDictionary中,具体的保存如_alarmsDic['Email'] = (IAlarm)EmailAlarm。这样做的好处小伙伴们自己琢磨吧,嘻嘻。

最后就是我们在主程序中调用AlarmContext来发出报警,具体的调用代码如下:

     }
}
</div>

OK,到此为止,利用策略模式设计的报警服务就介绍完毕啦。这篇文章的主要知识点我认为有两个,一个是策略模式,另一个就是利用反射。希望广大的小伙伴们提出宝贵的意见,最后,贴出枚举AlarmWay的代码:

&nb

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

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

  • 使用策略模式实现报警服务示例详解(短信报警)

相关文章

  • 2017-05-28C#实现延时并自动关闭MessageBox的方法
  • 2017-05-28.net实现序列化与反序列化实例解析
  • 2017-05-28C#中多态现象和多态的实现方法
  • 2017-05-28C#程序最小化到托盘图标操作步骤与实现代码
  • 2017-05-28C#实现窗体间传值实例分析
  • 2017-05-28C#判断系统是32位还是64位的方法
  • 2017-05-28C#给Excel添加水印实例详解
  • 2017-05-28C# 特殊的string类型详解
  • 2017-05-28C#中实现Fluent Interface的三种方法
  • 2017-05-28基于不要返回null之EmptyFactory的应用详解

文章分类

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

最近更新的内容

    • Winform中GridView分组排序功能实现方法
    • 深入理解C#中的枚举
    • 使用C#获取系统特殊文件夹路径的解决方法
    • C#后台接受前台JSON字符串装换成字典集合处理
    • C#编程和Visual Studio使用技巧(上)
    • 深入解析C#编程中struct所定义的结构
    • C#常用自定义函数小结
    • C#编程自学之类和对象
    • C#实现的调用DOS命令操作类实例
    • c#高效率导出多维表头excel的实例代码

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

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