在很多計(jì)算機(jī)專業(yè)的課程中有一門課叫做設(shè)計(jì)模式,一聽(tīng)就感覺(jué)及其具有理論感,讓人想起了混混欲睡的哲學(xué)課程和生澀難懂的編譯原理課(這兩個(gè)例子為小編主觀感受,不排除有生動(dòng)的編譯原理課和有趣的哲學(xué)課)。而且這門課程不像java語(yǔ)言學(xué)習(xí)那樣,可以直觀的看到自己對(duì)語(yǔ)法的應(yīng)用。所以很多小伙伴們就會(huì)發(fā)出這樣的疑惑?為什么要學(xué)設(shè)計(jì)模式?學(xué)設(shè)計(jì)模式有什么用?
以建房子為例子,磚瓦工可以建起來(lái)一間方方正正的房子,就像程序員能進(jìn)行代碼開(kāi)發(fā)一樣。但是沒(méi)有經(jīng)驗(yàn)的磚瓦工可能建起來(lái)的房子里面有一堆房間,卻沒(méi)有一間廁所,又或者把廁所和廚房放在一起(雖然這很不合理,但是的確可能存在)。而老到的磚瓦工他能根據(jù)以往的經(jīng)驗(yàn),在一間房子內(nèi)合理的布局廚房和廁所,這就是設(shè)計(jì)。程序員也是如此,新手程序員更多的想的是,如何簡(jiǎn)單的解決問(wèn)題,所以他們可能在業(yè)務(wù)代碼里面輸出一堆渲染頁(yè)面的代碼,也可能因?yàn)榫帉?xiě)過(guò)多的對(duì)象而將代碼寫(xiě)得很復(fù)雜。而老到的程序員他懂得如何編寫(xiě)代碼才能提高開(kāi)發(fā)效率,減少代碼冗余,讓整個(gè)項(xiàng)目更加合理。這就是為什么廣大計(jì)算機(jī)專業(yè)都有設(shè)計(jì)模式的原因了。
學(xué)習(xí)設(shè)計(jì)模式,有助于程序員更好地解決一個(gè)問(wèn)題,有利于優(yōu)化項(xiàng)目的結(jié)構(gòu),實(shí)現(xiàn)低耦合,高內(nèi)聚的效果,有利于團(tuán)隊(duì)之間的協(xié)作編程,有利于增加代碼可重用性和可維護(hù)性,代碼更容易被他人理解和保證代碼可靠性。因?yàn)橛辛嗽O(shè)計(jì)模式,使得代碼的編程可以實(shí)現(xiàn)工程化,才促使了軟件工程這個(gè)行業(yè)的誕生。
所以,一個(gè)程序員懂不懂得設(shè)計(jì)模式,是對(duì)他境界的一種劃分。懂得設(shè)計(jì)模式的程序員可以被稱為工程師,而不懂設(shè)計(jì)模式的只能被稱為碼農(nóng)。不過(guò)雖然廣大計(jì)算機(jī)科班都有設(shè)立設(shè)計(jì)模式的課程,但這門課程并不是束于高閣。隨著對(duì)設(shè)計(jì)模式的重視,互聯(lián)網(wǎng)上也出現(xiàn)了很多優(yōu)質(zhì)的設(shè)計(jì)模式的學(xué)習(xí)資料。比如W3Cschool就提供了很多設(shè)計(jì)模式的教程。小編在這里整理了一個(gè)列表,想要學(xué)習(xí)的可以前去查看:
設(shè)計(jì)模式