小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

0、Python與設(shè)計(jì)模式

 黃南山 2018-01-10

一、什么是設(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)秀程序所必備的。
正因?yàn)槿绱?,我們才需要學(xué)習(xí)設(shè)計(jì)模式。設(shè)計(jì)模式是面對(duì)各種問(wèn)題進(jìn)行提煉和抽象而形成的解決方案。這些設(shè)計(jì)方案是前人不斷試驗(yàn),考慮了封裝性、復(fù)用性、效率、可修改、可移植等各種因素的高度總結(jié)。它不限于一種特定的語(yǔ)言,它是一種解決問(wèn)題的思想和方法。

二、設(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)性。
一個(gè)大型的軟件項(xiàng)目,不可能由一個(gè)人完成,此類項(xiàng)目常常需要多個(gè)軟件開(kāi)發(fā)工程師的協(xié)同開(kāi)發(fā)。既然是協(xié)同開(kāi)發(fā),就一定會(huì)涉及到模塊間的相互影響,一個(gè)工程師編寫的一行代碼,可能會(huì)影響到其它工程師代碼的諸多因子。如果工程師之間的相互影響過(guò)大,那么整個(gè)項(xiàng)目無(wú)法形成合力,也就無(wú)法按時(shí)保質(zhì)完成。最理想的情況下,一個(gè)工程師的代碼不要影響到別人的模塊,但有時(shí),又不得不去借用或者被借到其它模塊。這其中的組織,也是需要智慧的。設(shè)計(jì)模式同樣可以作為協(xié)同作業(yè)的參考,遵循設(shè)計(jì)模式而設(shè)計(jì)的代碼結(jié)構(gòu),盡可能地減少模塊間的不必要依賴,在協(xié)同工作條件下,對(duì)項(xiàng)目的有序進(jìn)行有著非常大的幫助。
公司人事會(huì)有變動(dòng),程序員也會(huì)成長(zhǎng)。不管是哪種情況,代碼非常有可能會(huì)被移交,即代碼的編寫者和維護(hù)者很有可能會(huì)是不同的人。那么代碼的可讀性就顯得非常重要了。由于高級(jí)語(yǔ)言的出現(xiàn),讓機(jī)器讀懂你的意圖已經(jīng)不是最主要的“矛盾”,而讓人讀懂你的意圖才是最重要。按照設(shè)計(jì)模式編寫的代碼,其可讀性也會(huì)大大提升,利于團(tuán)隊(duì)項(xiàng)目的繼承和擴(kuò)展。

三、有哪些設(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í)。
隨著現(xiàn)代社會(huì)各類業(yè)務(wù)規(guī)模越來(lái)越大,挑戰(zhàn)越來(lái)越多,開(kāi)源技術(shù)不斷發(fā)展,設(shè)計(jì)模式也衍生出了很多的新的種類,不局限于這23種,在介紹這些基本的設(shè)計(jì)模式時(shí),針對(duì)些新的“品種”也會(huì)簡(jiǎn)單進(jìn)行介紹。

四、設(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ā)。
設(shè)計(jì)模式和軟件框架在軟件設(shè)計(jì)中是兩個(gè)不同的研究領(lǐng)域:A、設(shè)計(jì)模式如前邊的定義所講,它指的是針對(duì)一類問(wèn)題的解決方法,一個(gè)設(shè)計(jì)模式可應(yīng)用于不同的框架和被不同的語(yǔ)言所實(shí)現(xiàn);而框架則是一個(gè)應(yīng)用的體系結(jié)構(gòu),是一種或多種設(shè)計(jì)模式和代碼的混合體;B、設(shè)計(jì)模式相較于框架更容易移植,并且可以用各種語(yǔ)言實(shí)現(xiàn),而軟件框架則受限于領(lǐng)域大環(huán)境。雖然設(shè)計(jì)模式和軟件框架有很多不同,但在某些方面他們二者是統(tǒng)一的,即重視軟件復(fù)用,提高開(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ì)思路。
總體來(lái)說(shuō),軟件架構(gòu)可以由不同的框架和不同的設(shè)計(jì)模式,再加上特定的構(gòu)件組合來(lái)實(shí)現(xiàn);框架可以根據(jù)設(shè)計(jì)模式結(jié)合特定編程語(yǔ)言和環(huán)境來(lái)實(shí)現(xiàn)。設(shè)計(jì)模式就是解決單一問(wèn)題的設(shè)計(jì)思路和解決方法。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多