一、什么是設(shè)計(jì)模式?什么樣的程序員是一個(gè)好的程序員?學(xué)會(huì)很多門編程語(yǔ)言,就是一個(gè)好的程序員了么?事實(shí)上,學(xué)會(huì)一門編程語(yǔ)言不是一件很難的事,而“學(xué)會(huì)”一門編程語(yǔ)言是非常難的一件事。前一個(gè)“會(huì)”強(qiáng)調(diào)“能”,懂語(yǔ)法,能寫簡(jiǎn)單的程序就算是前者的“會(huì)”了;后一個(gè)“會(huì)”,強(qiáng)調(diào)“精”,顯然,光能寫出“Hello World”并不算是后者的“會(huì)”,能熟練應(yīng)用,并用編程語(yǔ)言解決各種問(wèn)題,才算是真正的“會(huì)”。編程語(yǔ)言就像是世界上任何有意義的東西一樣,它在一直變化,一直進(jìn)化,此刻學(xué)會(huì)的編程語(yǔ)言,到了下一刻,就可能有新東西出來(lái),跟上它進(jìn)步的節(jié)奏,本身就是一件非常費(fèi)精力的事,更別說(shuō)去在這個(gè)基礎(chǔ)上,去“會(huì)”第二門編程語(yǔ)言了。因而,個(gè)人認(rèn)為,使用過(guò)很多種的編程語(yǔ)言,并不是成為一個(gè)好的程序員的充分條件。一個(gè)好的程序員,更多的體現(xiàn)不應(yīng)該在他會(huì)使用多少“工具”,而是他能使用這些“工具”,創(chuàng)造多么大的成績(jī),解決多么大的問(wèn)題。掌握解決問(wèn)題的方法,能用自己精通的編程語(yǔ)言解決各種問(wèn)題,這才是成為一個(gè)優(yōu)秀程序所必備的。 二、設(shè)計(jì)模式的意義現(xiàn)在社會(huì)的發(fā)展可謂突飛猛進(jìn),過(guò)去常常被當(dāng)作軟件行業(yè)標(biāo)桿的“軟件工程”設(shè)計(jì)模型,逐漸讓出了它的半壁江山,給了一種叫作“敏捷開(kāi)發(fā)、快速迭代”的軟件開(kāi)發(fā)方式??焖俚沫h(huán)境下,需求就顯得不那么明確,需求常常伴隨著整個(gè)項(xiàng)目的進(jìn)行而變化。需求的不確定性,對(duì)程序編寫的要求就會(huì)比較高了。首先要考慮各種可能需求的兼容,但考慮的需求越多,就很容易陷入整個(gè)軟件架構(gòu)設(shè)計(jì)的深淵,不可自拔。設(shè)計(jì)模式對(duì)需求變更與代碼重用的考慮,可以被作為軟件設(shè)計(jì)的參考,由于設(shè)計(jì)模式基本上本著“高內(nèi)聚、低耦合”的原則,遵循設(shè)計(jì)模式而設(shè)計(jì)的代碼結(jié)構(gòu),常常會(huì)有著對(duì)需求的適應(yīng)性。 三、有哪些設(shè)計(jì)模式?設(shè)計(jì)模式可以分為三個(gè)大類:創(chuàng)建類設(shè)計(jì)模式、結(jié)構(gòu)類設(shè)計(jì)模式、行為類設(shè)計(jì)模式。創(chuàng)建類設(shè)計(jì)模式可以分為單例模式、工廠模式、抽象工廠模式、原型模式、建造者模式;結(jié)構(gòu)類設(shè)計(jì)模式可以分為裝飾器模式、適配器模式、門面模式、組合模式、享元模式、橋梁模式;行為類設(shè)計(jì)模式可以細(xì)分為策略模式、責(zé)任鏈模式、命令模式、中介者模式、模板模式、迭代器模式、訪問(wèn)者模式、觀察者模式、解釋器模式、備忘錄模式、狀態(tài)模式。本課程主要針對(duì)這23種設(shè)計(jì)模式進(jìn)行基于Python代碼的實(shí)例學(xué)習(xí)。 四、設(shè)計(jì)模式與架構(gòu)、框架的關(guān)系1、軟件框架與設(shè)計(jì)模式的關(guān)系軟件框架隨著軟件工程的發(fā)展而出現(xiàn),所謂的軟件框架,是提取了特定領(lǐng)域的軟件的共性部分所形成的軟件體系,它并不是一個(gè)成熟的軟件,而更像是一個(gè)“半成品”,程序員在框架之上,可以很方便地某些特定領(lǐng)域?qū)崿F(xiàn)又快又可靠的二次開(kāi)發(fā)。 2、軟件架構(gòu)與設(shè)計(jì)模式的關(guān)系軟件架構(gòu)是個(gè)比較大的概念,架構(gòu)要考慮軟件的整體結(jié)構(gòu)、層次劃分以及不同部分間的協(xié)作和交互等,架構(gòu)的著眼點(diǎn)偏整體。相比之下,框架和設(shè)計(jì)模式的范圍則具體很多,框架著眼于領(lǐng)域內(nèi)的解決方法,而設(shè)計(jì)模式則針對(duì)一類問(wèn)題的解決方案和設(shè)計(jì)思路。 |
|