<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      說說設計模式~裝飾器模式(Decorator)~多功能消息組件的實現(xiàn)

      返回目錄

      為何要設計多功能消息組件

      之前寫過一篇裝飾器模式的文章,感覺不夠深入,這次的例子是實現(xiàn)項目中遇到的,所以把它拿出來,再寫寫,之前也寫過消息組件的文章,主要采用了策略模式實現(xiàn)的,即每個項目可以通過配置進行一種消息的訂制,如,你可以訂制email,sms,rtx,qq等,但不能同時采用多種機制完成消息的發(fā)送,這在一些情況下是沒有問題的,但有時,我們也需要同時為客戶提供多種消息的推送,這在目前還是挺現(xiàn)時的,如在用戶下單后,同時為它發(fā)email 和短信進行通過,并對每個訂單的過程進行跟蹤并通知給用戶,這對于用戶來說,體驗非常不錯!

      多功能消息組件的組成

      1 消息元件抽象 MessageComponent

      2 默認的消息實現(xiàn)者DefaultMessage

      3 裝飾器抽象 Decorator

      4 實現(xiàn)Email消息的裝飾器 EmailDecorator

      5 實現(xiàn)SMS消息的裝飾器 SMSDecorator

      下面將部分核心代碼公開于世

      using System;
      
      namespace test
      {
          /// <summary>
          /// 消息發(fā)送元件
          /// </summary>
          public abstract class MessageComponent
          {
              public abstract void Send (string message);
          }
      
          /// <summary>
          /// 默認實現(xiàn)消息發(fā)達,可以記錄日志,訂閱事件,實現(xiàn)默認的發(fā)送消息等功能
          /// </summary>
          public class DefaultMessage:MessageComponent
          {
              public override void Send (string message)
              {
                  Console.WriteLine ("默認的消息發(fā)送機制");
              }
      
          }
      
          /// <summary>
          /// 對消息發(fā)送的裝飾,如加個Email發(fā)送,SMS發(fā)送等
          /// </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消息發(fā)送裝飾器
          /// </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發(fā)送消息...");
              }
      
          }
      
          /// <summary>
          /// SMS消息發(fā)送裝飾器
          /// </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發(fā)送消息...");
              }
      
          }
      }

      調用代碼如下:

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

      結果:

      而如果只希望使用sms發(fā)送,那就是:

                  Decorator smsDecorator = new SMSDecorator ();
                  smsDecorator.Send ("倉儲大叔消息組件...");

      希望本文章可以給初學者帶來收獲,呵呵!

      返回目錄

      posted @ 2015-03-13 11:27  張占嶺  閱讀(1233)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 伊人久久大香线蕉aⅴ色| 精品亚洲综合一区二区三区| 新乐市| 亚洲码亚洲码天堂码三区| 国产亚洲精品黑人粗大精选| 亚洲成人av在线综合| 99精品国产中文字幕| 日韩伦人妻无码| 国产av激情无码久久| 国产精品国产三级国产试看| 任我爽精品视频在线播放| 69人妻精品中文字幕| 亚洲中文字幕无码一区日日添| 欧美深度肠交惨叫| 日本道不卡一二三区视频 | 国产毛片精品一区二区色| 九九热在线免费播放视频| 久久国产精品波多野结衣| 风骚少妇久久精品在线观看| 日韩有码国产精品一区| 国产一区二区日韩在线| 安福县| 亚洲中文字幕在线二页| 日本一区二区久久人妻高清| 无码伊人66久久大杳蕉网站谷歌| 亚洲精品麻豆一区二区| 免费久久人人香蕉av| bt天堂新版中文在线| 国产成人亚洲日韩欧美| 日本一区二区精品色超碰| 亚洲第一视频区| xxxx丰满少妇高潮| 国产又色又爽又高潮免费| 久久精品国产成人午夜福利| 亚洲国产精品一区二区第一页| 狠狠色噜噜狠狠狠狠av不卡| 乱人伦人妻中文字幕不卡| 亚洲精品无码久久毛片| 国产丝袜在线精品丝袜不卡| 99久久亚洲精品无码毛片| 蜜桃亚洲一区二区三区四|