说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现
2015-03-13 11:27
696 查看
返回目录
2 默认的消息实现者DefaultMessage
3 装饰器抽象 Decorator
4 实现Email消息的装饰器 EmailDecorator
5 实现SMS消息的装饰器 SMSDecorator
调用代码如下:
结果:
而如果只希望使用sms发送,那就是:
希望本文章可以给初学者带来收获,呵呵!
返回目录
为何要设计多功能消息组件
之前写过一篇装饰器模式的文章,感觉不够深入,这次的例子是实现项目中遇到的,所以把它拿出来,再写写,之前也写过消息组件的文章,主要采用了策略模式实现的,即每个项目可以通过配置进行一种消息的订制,如,你可以订制email,sms,rtx,qq等,但不能同时采用多种机制完成消息的发送,这在一些情况下是没有问题的,但有时,我们也需要同时为客户提供多种消息的推送,这在目前还是挺现时的,如在用户下单后,同时为它发email 和短信进行通过,并对每个订单的过程进行跟踪并通知给用户,这对于用户来说,体验非常不错!多功能消息组件的组成
1 消息元件抽象 MessageComponent2 默认的消息实现者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 ("仓储大叔消息组件...");
结果:
而如果只希望使用sms发送,那就是:
Decorator smsDecorator = new SMSDecorator (); smsDecorator.Send ("仓储大叔消息组件...");
希望本文章可以给初学者带来收获,呵呵!
返回目录
相关文章推荐
- Head First 设计模式——装饰器(Decorator Pattern)——Python实现
- 设计模式、用Delphi实现---->Decorator 模式
- 几种结构型的设计模式概析【上】——Bridge模式,Adapter模式,Decorator模式【C++实现】
- 设计模式(9) 装饰器模式(DECORATOR)
- Java设计模式透析之 —— 装饰器模式(Decorator)
- [GoF设计模式]Decorator模式和Observer模式的C++实现
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- Python装饰器 decorator 设计模式
- 设计模式之: Decorator(装饰器)模式
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 常见设计模式的解析和实现(C++)之九-Decorator模式
- 设计模式之: Decorator(装饰器)模式
- 基于事件的监听,消息订阅设计模式的实现框架,ERP,OA,复杂,灵活多变的项目的福音
- 设计模式c++实现(一):装饰(Decorator)模式
- 设计模式之C++实现(三)---装饰者模式(Decorator)
- /LGC设计模式/消息队列的设计与实现
- 常见设计模式的解析和实现(C++)之九-Decorator模式
- 常见设计模式的解析和实现(C++)之九—Decorator模式
- 常见设计模式的解析和实现(C++)之九—Decorator模式