成長的煩惱:初涉設計模式[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.kjueaiud.com/