<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    經驗不在于年限,在于積累---專注互聯網軟件開發

    把工作當事業做,把項目當作品做!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks

    先簡單介紹Decorator 模式(裝飾模式)的內容和應用場景。

    裝飾模式可以動態地給一個對象添加額外的職責。雖然,利用子類繼承也可以實現這樣的功能,但是裝飾模式提供了一個更靈活的方式。
    因為繼承會為類型引入的靜態特質,使得這種擴展方式缺乏靈活性;
    并且隨著子類的增多(擴展功能的增多),各種子類的組合(擴展功能的組合)會導致更多子類的膨脹。

    下面是標準Decorator 模式的UML結構圖:

    clip_image001

    [此圖來自GOF 《設計模式》一書]

    現在結合我實際開發的一個例子談談這個模式的重構應用。

    還是那個SEO的項目,涉及群登錄、群發帖、群回復等功能。為了客戶調用簡單和代碼重用,
    設計的時候使用三個類來封裝這些功能:SiteLogin、SitePost、SiteReply。每個站點的登錄發帖回復功能都是調用這三個類實現的。

    剛開始設計時,只考慮一般HTTP協議的GET、POST請求,因為剛開始預研的時候,發現幾個網站都是這樣處理登錄發帖回復的。

    隨著后來,網站對象的不斷增加,發現有下面的兩個新需求:

    1. 有些站點采用Content-Type為multipart/form-data的方式提交,而不是默認的application/x-www-form-urlencoded方式。
    這兩種方式,在httpclient 3.1 中處理方法是完全不同的(雖然4.0版本已經合并到一起了)。

    2. 有些站點是采用https的方式提交的(增加額外的功能)。

    3. 有些網站是這兩種擴展需求都存在。

    當然,為了應付這樣的變數,處理方法有很多,可以在代碼中直接使用if語句來判斷,也可以通過子類繼承的方式增強這樣的功能。
    使用if語句的方式,處理這樣比較大的需求,是不優雅的。子類繼承的方式,在需求組合時會出現子類數目爆炸式增長。
    通過使用Decorator 模式的重構,可以比較好的處理這類問題。

    最后設計的UML圖如下(代碼就不貼出來了):

    image

    友情提示:本博文章歡迎轉載,但請注明出處:陳新漢
    posted on 2009-09-19 10:52 hankchen 閱讀(1712) 評論(2)  編輯  收藏 所屬分類: 設計模式

    Feedback

    # re: 設計模式重構應用---Decorator模式 2009-09-20 11:40 99書城
    是打開附件獨守空房  回復  更多評論
      

    # re: 設計模式重構應用---Decorator模式 2009-10-18 12:28 天堂露珠
    不錯的Decorator實踐。就是要把變化的部分分離出來。  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产电影午夜成年免费视频| 桃子视频在线观看高清免费视频| 成年大片免费视频| 亚洲毛片无码专区亚洲乱| 84pao国产成视频免费播放| 亚洲国产精品第一区二区| 久久国产精品一区免费下载| 亚洲色四在线视频观看| 91av免费观看| 亚洲精品自在线拍| 亚洲美女免费视频| 亚洲已满18点击进入在线观看| 好爽…又高潮了免费毛片| 亚洲国产一区二区三区在线观看| 四虎国产精品免费久久影院| 乱淫片免费影院观看| 亚洲精品国产美女久久久| 久久免费看少妇高潮V片特黄| 亚洲欧洲日产国码在线观看| 女人18毛片水真多免费播放| 真正全免费视频a毛片| 亚洲精品无码久久久久去q| 6080午夜一级毛片免费看| 亚洲日韩精品无码AV海量| 亚洲精品无码你懂的网站| 国产成人免费视频| 亚洲欧洲无码一区二区三区| 精品亚洲成α人无码成α在线观看 | 亚洲一卡2卡3卡4卡国产网站| 毛片a级毛片免费观看品善网| 色费女人18女人毛片免费视频| 久久久久亚洲精品中文字幕| 最近免费mv在线电影| 亚洲精品无码国产片| 亚洲色欲色欲www在线丝| 99re6免费视频| 朝桐光亚洲专区在线中文字幕| 国产∨亚洲V天堂无码久久久| 99re热免费精品视频观看| 污网站在线免费观看| 亚洲成aⅴ人片在线影院八|