成長的煩惱:初涉設(shè)計(jì)模式

字號:

相信很多人都喜歡看這部喜劇,我是很喜歡,里面包括了成長中的悲歡離合,你在其中可以尋找你成長的足跡。
    編程成長之路何嘗不是這樣的呢?
    故事就是從這里開始的。
    小王是剛畢業(yè)的學(xué)生,進(jìn)入一家軟件公司,薪水不錯(cuò)。年輕人充滿干勁,有著遠(yuǎn)大的目標(biāo)。前三天參加了公司的培訓(xùn),三天沒寫代碼了,手癢。第四天,項(xiàng)目經(jīng)理走過來說:“小王,寫一個(gè)整型鏈表的排序算法吧,我們在項(xiàng)目中要用。”
    冒泡是小王在腦海中第一個(gè)浮現(xiàn)出來的。翻開某某圣經(jīng),摘了段冒泡算法,修改了一些代碼的書寫風(fēng)格(有些圣經(jīng)代碼風(fēng)格不咱的),代碼大致如此:
     BOOL Sort(ListInt)
     {
     冒泡排序算法
     {
     比較語句
     }
     return TRUE;
     }
    小王檢查了一下,還用測試用例測試了一把,確保萬無一失,交給了經(jīng)理。經(jīng)理說了句不錯(cuò),樂壞了小王。
    第二天,經(jīng)理跑過來說:“把你昨天的代碼改一下,現(xiàn)在要比較浮點(diǎn)型了,還有能否速度上提高一點(diǎn)?”
    小王上網(wǎng)查了一下,選擇了快速排序算法,不忘把昨天寫的備份了一把,然后在昨天函數(shù)的基礎(chǔ)上改。代碼大致如此:
     BOOL Sort(ListInt)
     {
     快速排序算法
     {
     比較語句
     }
     return TRUE;
     }
     Easy嗎?測試交差。
    一年后……
    鏡頭切換……
    小王坐在計(jì)算機(jī)前熟練的編寫著程序,而且旁邊還放著本《設(shè)計(jì)模式》的書。知道了面向?qū)ο缶幊?,知道了設(shè)計(jì)模式,但理解還不夠深刻。排序算法也演變成比較文件名了。
    一日經(jīng)理過來說:“小王,現(xiàn)在我們的排序算法要用在嵌入式平臺中,你做一些算法的研究工作,給出一份報(bào)告?!?BR>    這不是策略模式的典型應(yīng)用嗎?定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使他們可以相互轉(zhuǎn)換。
    這樣,小王把一些流行的排序算法都試了一遍,總共有七八種,換一種算法速度也很快,新的算法插入到系統(tǒng)中,老算法從系統(tǒng)中"退休",實(shí)現(xiàn)插件式替換。
     CSort *pSort = new CBubbleSort;
     CClient.ListSort(pSort);