• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

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

軟件測試之C#面向對象設計模式縱橫談[2]

發布: 2009-11-12 09:52 | 作者: 不詳 | 來源: 領測軟件測試網采編 | 查看: 17次 | 進入軟件測試論壇討論

領測軟件測試網

軟件測試之C#面向對象設計模式縱橫談[2]   軟件測試工具

關鍵字:C# 面向對象 設計模式

  分析一下代碼。

  這段代碼是將中文的數字轉換為阿拉伯數字,如果按照面向過程的算法肯定是來截取字符串進行判斷然后組合成正確的數字。在這段代碼中則利用了interpreter模式將位數進行表達式的封裝。

  首先看抽象Expression類,首先他封裝了一個字典類,這個字典保存了中文的1-9的字符及其對應的阿拉伯數字。Interpret方法,在便利字典中的每個中文數字,并且判斷截取中文數字加其后綴是否是結尾,如果為真那么將對應的值乘以對應的位數,對應的位數是一個純虛函數Multiplier,由派生類自己實現。在取得了對應的Expression的值后需要將中文數字語句中對應的字符串去掉,即GetLength函數,取得對應的位數符合加1。這是一個虛函數,可以由派生類重寫。注意GeExpression就重寫了此虛函數,因為個位數的長度是1,而不是位數符加1。

  注意下面這段代碼

  if(context.Statement.EndsWith("零"))

  {

  context.Statement = context.Statement.Substring(0, context.Statement.Length - 1);

  }

  這是處理三萬零五十類似中間有零來分割的情況,將零去掉。

  在WanExpression中,我們重寫了Interpret函數,這是由于萬位數可以由千位一下的數字來描述,如三千二百萬。重寫Interpret函數的算法如下,先將千以下的表達式(包括千)加入一個ArrayList保存起來,然后遍歷數字表,如果當前的表達式已經截取到萬,那么先將已取得的數值用中間臨時變量保存起來,將當前表達式的數字值置為0。然后將萬以后的文字截取。在依次用ArrayList里面的千、百、十、個的Expression進行解釋,最后取得的數值乘以萬對應的位數加上臨時變量。這里的算法不用擔心億的情況,因為沒有億的運算符表達式,算到億的時候,解釋器已經算完描述萬的數值

  在看Main函數的調用,在Main函數里使用ArrayList保存了個十百千萬的表達式,依次用這些表達式來解析上下文。注意,解析的順序是個十百千萬的順序。

  解釋器模式是用來解釋語言的文法的。但是它的適用范圍其實很有限:

  1.簡單文法:對于復雜的文法來說,解釋器模式會讓類的層次復雜的難以管理,如果個十百千萬類似位數符很多,那么派生類的體系將相當龐大。所以此模式適用于文法比較簡單的

  2.效率無關:追求效率的語法解釋通常使用狀態機解決。

 

延伸閱讀

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

TAG: 面向對象 模式 軟件測試 設計 縱橫談


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

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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97