邁向大牛的重要一步——掌握設計模式

IT職場的小菜常常有這樣的疑問:程序員

爲何一個類似的功能,大牛一下子就搞定,而後清閒地品着下午茶逛淘寶;而本身加班加點搞到天亮還作不完。web

爲何用戶提出需求變動後,大牛隻需瀟灑地敲敲鍵盤,改改配置;而本身將代碼改了又改,刪了又建,幾乎暈厥,最後只能推翻重來編程

爲何大牛寫完的程序測試上線後,幾乎完美運行,用戶無懈可擊;而本身的程序bug重重,改好一個卻又引出另外一個,按下葫蘆浮起瓢,幾近崩潰。設計模式

爲何一樣是程序員,大牛工資1W,而本身只能拿區區的3K?架構

大牛顯然知道一些小菜所不知道的祕密,這祕密又是什麼呢?編程語言

這個祕密就是設計模式設計模式(Design pattern)是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石同樣。只有精通了設計模式,纔敢說真正理解了軟件工程。能夠說,設計模式是每個架構師所必備的技能之一。做爲一個面向對象設計程序員,只有精通了設計模式,才能完成自身價值從3K到1W的飛躍,才能擺脫碼奴的命運,成爲一個真正的軟件工程師。測試

提到設計模式,不得不感謝GoF(Gang of Four,四人組),他們1995年出版的《設計模式》一書,第一次將設計模式提高到理論高度,並將之規範化。書中一共總結了23種基本的設計模式。而這23中設計模式幾乎涵蓋了面向對象設計過程當中全部問題的解決方案。書中提到的23種設計模式分別是:spa

1.單例模式 2.工廠方法模式 3.抽象工廠模式 4.模版方法模式 5.建造者模式 6.代理模式 7.原型模式 8.中介者模式
9.命令模式 10.責任鏈模式 11.裝飾模式 12.策略模式 13.適配器模式 14.迭代器模式 15.組合模式 16.觀察者模式
17.門面模式 18.備忘錄模式 19.訪問者模式 20.狀態模式 21.解釋器模式 22.享元模式 23.橋樑模式
設計

那麼如此多的設計模式又是從何而來呢?《易經》有云:「易有太極,是生兩儀,兩儀生四象,四象生八卦」,意思就是說世界萬物皆有起源。而設計模式的起源是面向對象程序設計思想,是面向對象設計的精髓——抽象。面向對象經過類和對象來實現抽象,實現時產生了面向對象的三個重要機制:封裝、繼承、多態。正是這三個機制衍生出了各類各樣的設計模式。在面向對象軟件設計的發展過程當中,除了《設計模式》一書中提到的23中設計模式以外,新的設計模式仍然不斷出現。代理

從面向過程到面向對象是軟件設計誕生以來的邁出的最偉大的一步,面向對象程序設計成功解決了面向過程軟件編程的低效率問題,而且完全改變了人們的編程思惟,爲軟件設計揭開了新的篇章。然而,要實現面向對象設計,完全擺脫面向過程設計思惟,並不單單是隻要使用了一門面向對象的編程語言就可以達到的。使用面向對象設計,能夠設計出優秀的軟件,一樣也能夠設計出糟糕的軟件。只有遵循一些特定的原則,才能設計出複用性高靈活性好的軟件來。

在運用面向對象的思想進行軟件設計時,須要遵循的原則一共有6個,他們是:

1.  單一職責原則(Single Responsibility Principle)
2.  里氏替換原則(Liskov Substitution Principle)
3.  依賴倒置原則(Dependence Inversion Principle)
4.  接口隔離原則(Interface Segregation Principle)
5.  迪米特法則(Law Of Demeter)
6.  開閉原則(Open Close Principle)

在軟件設計的過程當中,只要咱們儘可能遵循以上六條設計原則,設計出來的軟件必定會是一個優秀的軟件,它一定足夠健壯、足夠穩定,並以極大的靈活性來迎接隨時而來的需求變動等因素。當徹底明白這六個原則的含義時,小菜便完成了走向大牛的蛻變。

相關文章
相關標籤/搜索