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