邁出從3K到1W的重要一步——掌握設計模式
IT職場的小菜經常有這樣的疑問:
為什麼一個相似的功能,大牛一會兒就搞定,然後悠閒地品著下午茶逛淘寶;而自己加班加點搞到天亮還做不完。
為什麼使用者提出需求變更後,大牛隻需瀟灑地敲敲鍵盤,改改配置;而自己將程式碼改了又改,刪了又建,幾乎暈厥,最後只能推翻重來。
為什麼大牛寫完的程式測試上線後,幾乎完美執行,使用者無懈可擊;而自己的程式bug重重,改好一個卻又引出另一個,按下葫蘆浮起瓢,幾近崩潰。
為什麼同樣是程式設計師,大牛工資1W,而自己只能拿區區的3K?
大牛顯然知道一些小菜所不知道的祕密,這祕密又是什麼呢?
這個祕密就是設計模式。設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。設計模式使程式碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。只有精通了設計模式,才敢說真正理解了軟體工程。可以說,設計模式是每一個架構師所必備的技能之一。作為一個物件導向設計程式設計師,只有精通了設計模式,才能完成自身價值從3K到1W的飛躍,才能擺脫碼奴的命運,成為一個真正的軟體工程師。
提到設計模式,不得不感謝GoF(Gang of Four,四人組),他們1995年出版的《設計模式》一書,第一次將設計模式提升到理論高度,並將之規範化。書中一共總結了23種基本的設計模式。而這23中設計模式幾乎涵蓋了物件導向設計過程中所有問題的解決方案。書中提到的23種設計模式分別是:
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)
在軟體設計的過程中,只要我們儘量遵循以上六條設計原則,設計出來的軟體一定會是一個優秀的軟體,它必定足夠健壯、足夠穩定,並以極大的靈活性來迎接隨時而來的需求變更等因素。當完全明白這六個原則的含義時,小菜便完成了走向大牛的蛻變。
相關文章
- 微軟開放API 邁出透明化重要一步微軟API
- 《從設計到模式》——解讀設計模式設計模式
- 《從設計到模式》——設計模式視訊教程設計模式
- Sun新推Java入口網站 邁出開源重要一步Java網站
- 程式設計師從0到1創業時,第一步重要的思考是什麼?程式設計師創業
- Dubbo 邁出雲原生重要一步 - 應用級服務發現解析
- 設計模式從放棄到入門設計模式
- AlphaFold 3 向解碼分子行為和生物計算邁出重要一步,Nature 子刊銳評
- 設計模式——從工廠方法模式到 IOC/DI思想設計模式
- 從碼農到設計者,從單例模式入手設計程式碼單例模式
- 個人資料保護邁出勇敢一步
- 從單伺服器模式到負載均衡設計伺服器模式負載
- 前端工程師必須掌握的設計模式前端工程師設計模式
- 2021年總結:邁出一步、買房
- MVP設計模式應該這樣掌握MVP設計模式
- 一步一步帶你掌握webpack(三)——輸出管理Web
- AI之旅:起步即邁出重要一步,部落格園與 Chat2DB 達成戰略合作AI
- 從設計模式的設計原則感悟生活設計模式
- 【分享】從Mybatis原始碼中,學習到的10種設計模式MyBatis原始碼設計模式
- 2.帶你邁出Flutter開發的第一步Flutter
- 1.2 《硬啃設計模式》 第2章 學習設計模式需掌握的UML知識設計模式
- python,從似懂非懂到初步掌握Python
- 【肥朝】從JDK中,我們能學到哪些設計模式?JDK設計模式
- Choerodon的微服務之路(一):如何邁出關鍵的第一步微服務
- 邁向物件導向程式設計的第一步:封裝(c#描述) (轉)物件程式設計封裝C#
- 從程式設計到養生程式設計程式設計
- 程式程式碼進化的一些思考:從物件導向到設計模式,到函數語言程式設計物件設計模式函數程式設計
- Dubbo-go 釋出 1.5 版,朝雲原生邁出關鍵一步Go
- Git從入門到熟練掌握Git
- 邁出資料安全建設的第一步|公安資料分類分級建設案例實踐
- 邁出物聯網的第一步,玩兒一下ArduinoUI
- 從C#的Singleton設計模式實現看.NET Framework特性對開發者的重要性 (轉)C#設計模式Framework
- 成為高薪人工智慧人才,你要邁出這一步高薪人工智慧
- 從真實專案中摳出來的設計模式——第一篇:策略模式設計模式
- js設計模式--釋出訂閱模式JS設計模式
- 手遊開發者談遊戲營收模式設計中的最重要規則遊戲營收模式
- 設計模式系列 · 無從下手的困惑 (一)設計模式
- javascript中的設計模式之釋出-訂閱模式JavaScript設計模式