迈出从3K到1W的重要一步——掌握设计模式
??????? 為什么一個相似的功能,大牛一會兒就搞定,然后悠閑地品著下午茶逛淘寶;而自己加班加點搞到天亮還做不完。
??????? 為什么用戶提出需求變更后,大牛只需瀟灑地敲敲鍵盤,改改配置;而自己將代碼改了又改,刪了又建,幾乎暈厥,最后只能推翻重來。
??????? 為什么大牛寫完的程序測試上線后,幾乎完美運行,用戶無懈可擊;而自己的程序bug重重,改好一個卻又引出另一個,按下葫蘆浮起瓢,幾近崩潰。
??????? 為什么同樣是程序員,大牛工資1W,而自己只能拿區(qū)區(qū)的3K?
??????? 大牛顯然知道一些小菜所不知道的秘密,這秘密又是什么呢?
??????? 這個秘密就是設(shè)計模式。設(shè)計模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)。使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設(shè)計模式使代碼編制真正工程化,設(shè)計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。只有精通了設(shè)計模式,才敢說真正理解了軟件工程。可以說,設(shè)計模式是每一個架構(gòu)師所必備的技能之一。作為一個面向?qū)ο笤O(shè)計程序員,只有精通了設(shè)計模式,才能完成自身價值從3K到1W的飛躍,才能擺脫碼奴的命運,成為一個真正的軟件工程師。
??????? 提到設(shè)計模式,不得不感謝GoF(Gang of Four,四人組),他們1995年出版的《設(shè)計模式》一書,第一次將設(shè)計模式提升到理論高度,并將之規(guī)范化。書中一共總結(jié)了23種基本的設(shè)計模式。而這23中設(shè)計模式幾乎涵蓋了面向?qū)ο笤O(shè)計過程中所有問題的解決方案。書中提到的23種設(shè)計模式分別是:
1.單例模式 2.工廠方法模式 3.抽象工廠模式 4.模版方法模式 5.建造者模式 6.代理模式 7.原型模式 8.中介者模式
9.命令模式 10.責(zé)任鏈模式 11.裝飾模式 12.策略模式 13.適配器模式 14.迭代器模式 15.組合模式 16.觀察者模式
17.門面模式 18.備忘錄模式 19.訪問者模式 20.狀態(tài)模式 21.解釋器模式 22.享元模式 23.橋梁模式
??????? 那么如此多的設(shè)計模式又是從何而來呢?《易經(jīng)》有云:“易有太極,是生兩儀,兩儀生四象,四象生八卦”,意思就是說世界萬物皆有起源。而設(shè)計模式的起源是面向?qū)ο蟪绦蛟O(shè)計思想,是面向?qū)ο笤O(shè)計的精髓——抽象。面向?qū)ο笸ㄟ^類和對象來實現(xiàn)抽象,實現(xiàn)時產(chǎn)生了面向?qū)ο蟮娜齻€重要機制:封裝、繼承、多態(tài)。正是這三個機制衍生出了各種各樣的設(shè)計模式。在面向?qū)ο筌浖O(shè)計的發(fā)展過程中,除了《設(shè)計模式》一書中提到的23中設(shè)計模式之外,新的設(shè)計模式仍然不斷出現(xiàn)。
??????? 從面向過程到面向?qū)ο笫擒浖O(shè)計誕生以來的邁出的最偉大的一步,面向?qū)ο蟪绦蛟O(shè)計成功解決了面向過程軟件編程的低效率問題,并且徹底改變了人們的編程思維,為軟件設(shè)計揭開了新的篇章。然而,要實現(xiàn)面向?qū)ο笤O(shè)計,徹底擺脫面向過程設(shè)計思維,并不僅僅是只要使用了一門面向?qū)ο蟮木幊陶Z言就能夠達到的。使用面向?qū)ο笤O(shè)計,可以設(shè)計出優(yōu)秀的軟件,同樣也可以設(shè)計出糟糕的軟件。只有遵循一些特定的原則,才能設(shè)計出復(fù)用性高靈活性好的軟件來。
在運用面向?qū)ο蟮乃枷脒M行軟件設(shè)計時,需要遵循的原則一共有6個,他們是:
1.??單一職責(zé)原則(Single?Responsibility?Principle)
2.??里氏替換原則(Liskov?Substitution?Principle)
3.??依賴倒置原則(Dependence?Inversion?Principle)
4.??接口隔離原則(Interface?Segregation?Principle)
5.??迪米特法則(Low?Of?Demeter)
6.??開閉原則(Open?Close?Principle)
??????? 在軟件設(shè)計的過程中,只要我們盡量遵循以上六條設(shè)計原則,設(shè)計出來的軟件一定會是一個優(yōu)秀的軟件,它必定足夠健壯、足夠穩(wěn)定,并以極大的靈活性來迎接隨時而來的需求變更等因素。當(dāng)完全明白這六個原則的含義時,小菜便完成了走向大牛的蛻變。
總結(jié)
以上是生活随笔為你收集整理的迈出从3K到1W的重要一步——掌握设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows上C++使用共享内存进行进
- 下一篇: ASP.NET WebForm和Mvc开