成長的煩惱:初涉設計模式[2]

發表于:2010-03-01來源:作者:點擊數: 標簽:設計初涉煩惱成長模式
成長的煩惱:初涉設計模式[2] 軟件測試 CSort *pSort = new CBubbleSort; CClient.ListSort(pSort); 如果要改成快速排序,只要如此: CSort *pSort = new CQ uickSort; CClient.ListSort(pSort); 測試交差,當然經理自己也有想法,又讓小王試了另外的幾個算

  成長的煩惱:初涉設計模式[2]  軟件測試

  CSort *pSort = new CBubbleSort;

  CClient.ListSort(pSort);

  如果要改成快速排序,只要如此:

  CSort *pSort = new CQuickSort;

  CClient.ListSort(pSort);

  測試交差,當然經理自己也有想法,又讓小王試了另外的幾個算法,小王都能輕松的完成。策略模式的作用在這里淋漓盡致的發揮了,小王心里特別有成就感。

  過了些日子,客戶提出需要按文件名、日期進行排序,小王覺得這還是比較簡單的,更改了一下UML圖:

  改代碼的主要工作是copy-paste,就四個函數,也就很快完成了。

  客戶的需求是不會停止的,為了加強功能,提出需要按文件大小、文件的類型排序,天知道客戶還會提出什么要求。

  “再也不能這樣活”,小王聽著歌,陷入了沉思。

  “排序的算法和比較算法分開來會如何呢?把它們脫耦,使得二者可以獨立地變化。這句話怎么這么熟悉,我肯定在哪里看到過?!毙⊥趺Ψ_《設計模式》,開始查閱。

  “Got it,這不就是橋梁模式(Bridge)?!币魂囆老?,馬上就干。半個小時后,UML圖出來了,如下:

  客戶端代碼如下:

  CSort *pSort = new CQuickSort;

  CCompareType *pType = new CNameCompare;

  pSort->SetType(pType);

  pSort->Sort(pList);

  哈哈,客戶們,你們盡管提要求吧。

原文轉自:http://www.anti-gravitydesign.com

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