首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 繽紛校園 英語學習
2010考研 | 自學考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英、、、韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員
單證員 | 物流師 | 價格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會工作者
會計職稱 | 注會CPA | 經(jīng)濟師 | 統(tǒng)計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師
法律顧問 | 會計證
一級建造師 | 二級建造師 | 造價師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結構師 | 建筑師 | 安全評價師
房地產(chǎn)估價師 | 土地估價師 | 設備監(jiān)理師 | 巖土工程師 | 質量資格 | 房地產(chǎn)經(jīng)紀人 | 造價員
投資項目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價 | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價工程師 | 招標師
執(zhí)業(yè)護士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統(tǒng)分析師 > 正文

封裝的變化之排序算法中的封裝

設想這樣一個需求,我們需要為自己的框架提供一個負責排序的組件。目前需要實現(xiàn)的是冒泡排序算法和快速排序算法,根據(jù)“面向接口編程”的,我們可以為這些排序算法提供一個統(tǒng)一的接口ISort,在這個接口中有一個方法Sort(),它能接受一個object數(shù)組參數(shù)。對數(shù)組進行排序后,返回該數(shù)組。接口的定義

 

public interface ISort
{
 void Sort(ref object beSorted);
}

  其類圖

   然而一般對于排序而言,排列是有順序之分的,例如升序,或者降序,返回的結果也不相同。最簡單的方法我們可以利用if語句來實現(xiàn)這一目的,例如在QuickSort類中:

 

public class QuickSort:ISort
{
 private string m_SortType;
 public QuickSort(string sortType)
 {
  m_SortType = sortType;
 }
 public void Sort(ref object beSorted)
 {
  if (m_SortType.ToUpper().Trim() == “ASCENDING”)
  {
   //執(zhí)行升序的快速排序;
  }
  else
  {
   //執(zhí)行降序的快速排序;
  }
 }
}

  當然,我們也可以將string類型的SortType定義為枚舉類型,減少出現(xiàn)錯誤的可能性。然而仔細閱讀代碼,我們可以發(fā)現(xiàn)這樣的代碼是非常僵化的,一旦需要擴展,如果要求我們增加新的排序順序,例如字典順序,那么我們面臨的工作會非常繁重。也就是說,變化產(chǎn)生了。通過分析,我們發(fā)現(xiàn)所謂排序的順序,恰恰是排序算法中最關鍵的一環(huán),它決定了誰排列在前,誰排列在后。然而它并不屬于排序算法,而是一種比較的策略,后者說是比較的行為。

轉帖于:軟件水平考試_考試吧
文章搜索
封裝的變化之排序算法中的封裝網(wǎng)友評論網(wǎng)友評論
版權聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系,我們將會及時處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。
 gaoxiaoliang