星空网 > 软件开发 > ASP.net

说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现

返回目录

为何要设计多功能消息组件

之前写过一篇装饰器模式的文章,感觉不够深入,这次的例子是实现项目中遇到的,所以把它拿出来,再写写,之前也写过消息组件的文章,主要采用了策略模式实现的,即每个项目可以通过配置进行一种消息的订制,如,你可以订制email,sms,rtx,qq等,但不能同时采用多种机制完成消息的发送,这在一些情况下是没有问题的,但有时,我们也需要同时为客户提供多种消息的推送,这在目前还是挺现时的,如在用户下单后,同时为它发email 和短信进行通过,并对每个订单的过程进行跟踪并通知给用户,这对于用户来说,体验非常不错!

多功能消息组件的组成

1 消息元件抽象 MessageComponent

2 默认的消息实现者DefaultMessage

3 装饰器抽象 Decorator

4 实现Email消息的装饰器 EmailDecorator

5 实现SMS消息的装饰器 SMSDecorator

下面将部分核心代码公开于世

using System;namespace test{  /// <summary>  /// 消息发送元件  /// </summary>  public abstract class MessageComponent  {    public abstract void Send (string message);  }  /// <summary>  /// 默认实现消息发达,可以记录日志,订阅事件,实现默认的发送消息等功能  /// </summary>  public class DefaultMessage:MessageComponent  {    public override void Send (string message)    {      Console.WriteLine ("默认的消息发送机制");    }  }  /// <summary>  /// 对消息发送的装饰,如加个Email发送,SMS发送等  /// </summary>  public abstract class Decorator:MessageComponent  {    private MessageComponent _messageContaion;    public Decorator (MessageComponent messageContaion)    {      _messageContaion = messageContaion;    }    public override void Send (string message)    {      if (_messageContaion != null)        _messageContaion.Send (message);    }  }  /// <summary>  /// Email消息发送装饰器  /// </summary>  public class EmailDecorator:Decorator  {    public EmailDecorator () : this (null)    {    }    public EmailDecorator (MessageComponent messageContaion) : base (messageContaion)    {    }    public override void Send (string message)    {      base.Send (message);      Console.WriteLine ("采用Email发送消息...");    }  }  /// <summary>  /// SMS消息发送装饰器  /// </summary>  public class SMSDecorator:Decorator  {    public SMSDecorator () : this (null)    {    }    public SMSDecorator (MessageComponent messageContaion) : base (messageContaion)    {    }    public override void Send (string message)    {      base.Send (message);      Console.WriteLine ("采用SMS发送消息...");    }  }}

调用代码如下:

        MessageComponent defaultMessage = new DefaultMessage ();      Decorator emailDecorator = new EmailDecorator (defaultMessage);      Decorator smsDecorator = new SMSDecorator (emailDecorator);//把emailDecorator添加到sms后,同时它集成了defaultMessage      smsDecorator.Send ("仓储大叔消息组件...");

结果:

说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现

而如果只希望使用sms发送,那就是:

      Decorator smsDecorator = new SMSDecorator ();      smsDecorator.Send ("仓储大叔消息组件...");

说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现

希望本文章可以给初学者带来收获,呵呵!

返回目录




原标题:说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

盘点:容易被卖家们忽视的优势品类:https://www.ikjzd.com/articles/21835
“令和”一出流量猛涨,亚马逊日本站卖家们的爆单机会!:https://www.ikjzd.com/articles/21836
亚马逊侵权问题详解!如何避免这些侵权?:https://www.ikjzd.com/articles/21837
法国FNAC电商平台入驻开店攻略详解!:https://www.ikjzd.com/articles/21838
亚马逊如何发货最省钱?卖家必知的几种物流发货模式!:https://www.ikjzd.com/articles/21846
中国跨境电商出口趋势与机遇白皮书:https://www.ikjzd.com/articles/21848
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流