• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    設計模式初學者系列—重構到Bridge模式

    發布: 2010-3-09 11:15 | 作者: 不詳 | 來源: 領測軟件測試網采編 | 查看: 54次 | 進入軟件測試論壇討論

    領測軟件測試網

      設計模式初學者系列—重構到Bridge模式   軟件測試 

         在這篇文章中,我將以記述我整個重構過程的方式來得到橋接模式,也許很多人學習設計模式都有我這樣的歷程,看過很多模式的書籍,但還是無從下手,很多人都說模式往往是重構得來的,但是如何重構?如何去思考?

      在這個設計模式初學者系列里我將改變以前的風格,今后每一篇都以真實的項目重構例子來描述重構到模式,所有的描述都來源于現實,如果沒有現實的案例那我寧愿不寫。希望以這種方式記錄能夠給一些像我一樣曾經很困惑的朋友幫助。

      背景

      PM:小Y,你看,這個Dundas的Chart(注1)控件效果很好,功能也很強大,但是使用的時候太麻煩了,你能不能將其封裝一下,這樣其他人使用的時候也簡單多了

      我:嗯,這個我看看吧,應該可以。

      注1

      Dundas Chart控件是一個既可以用在WinForm里又可以用在WebForm里的圖表控件,可以繪制各種曲線圖、柱狀圖和餅圖等等,功能十分強大。在本文中我們要了解Dundas Chart的三個概念:Chart、ChartArea、Series

      如是我拿起紙和筆去收集需求

      A:這個我覺得當這個控件上的一個Series的Enabled屬性值變化的時候應該觸發一個事件,這樣我們就可以在這個事件觸發時干些事情了,但是現在沒有,我不得不做很多工作

      B:和A一樣的問題,我覺得控件上一個ChartArea的Visible屬性值變化時也應該觸發一個事件。

      C: ………

      我的頭慢慢的大起來,需求收集了一大堆,怎么弄呢?我還是做了下面這樣的個設計

      第一次重構:使用繼承封裝Chart原生API,使其更好使用

      我相信很多人第一個設計也許是這樣,一下子就想到繼承,這樣我們可以復用Dundas Chart里面的很多東西了,以免重寫很多東西。

      下面只選取一段Code:

      public class JurassicSeries : Series

      {

      //...更多擴展

      public event EventHandler SeriesEnabled;

      protected void OnSeriesEnabled()

      {

      if (SeriesEnabled != null)

      SeriesEnabled(this, new EventArgs());

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: Bridge 初學者 模式 設計 重構

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>