設計模式(一):學習大綱

設計模式(一):學習大綱

該系列文章,是在學習網上課程時的學習總結,可能會有一些瑕疵和錯誤,看到的可以留言回饋,謝謝~

學習意義

重要性的看法

設計模式老生常談了,對程式設計師的後續發展是很重要的,可以有效提升程式碼的可讀性,具體來看,有如下用途:

  • 應對面試,面試裡面裝高手;
  • 裝杯,寫出來的程式碼別人看到了只能說牛皮;
  • 複雜邏輯的結構用設計模式的思想來實現程式碼,才能實現的好;
  • 源碼、框架裡面很多設計模式思想,不懂就看不懂了;
  • 一切為了職場未來更好的裝杯。

大綱

image.png

面向對象

  • 四大特性:繼承、封裝、多態、抽象;
  • 面向對象和面向過程的區別和聯繫;
  • 面向對象的分析、設計、編程;
  • 介面和抽象類的區別和聯繫;
  • 如何基於介面實現而不是基於實現;
  • 為何要多用組合而不是繼承;
  • 面向過程中的貧血模型和面向對象的充血模型;

設計原則

  • SRP 單一職責原則;
  • OCP 開閉原則;
  • LSP 里氏替換原則;
  • ISP 介面隔離原則;
  • DIP 依賴倒置原則;
  • DRY 原則;
  • KISS 原則;
  • YAGNI 原則;
  • LOD 原則

設計模式

設計模式是一系列方法論的抽象模型,大部分是用來解決程式碼的可拓展性問題,在學習這一塊的時候,重點是要知道這些設計模式是用來解決什麼問題的,在什麼場景下用,並且不過度設計。

  • 創建型
    • 單例模式
    • 工廠模式
    • 建造者模式
    • 原型模式
  • 結構型
    • 代理模式
    • 橋接模式
    • 裝飾者模式
    • 適配器模式
    • 門面模式
    • 組合模式
    • 享元模式
  • 行為型
    • 觀察者模式
    • 模板模式
    • 策略模式
    • 職責鏈模式
    • 迭代器模式
    • 狀態模式
    • 訪問者模式
    • 備忘錄模式
    • 命令模式
    • 解釋器模式
    • 中介模式

編程規範

目前市面上已經有很多要求規範了,所以這裡也都是一些規章要求等,照著規範來就行了。

比如,我們直接用阿里的《程式碼規範》即可,在 IDEA 里也有其對應的插件實現,盡量遵守即可。

程式碼重構

程式碼重構是一個持續迭代的過程,而每次採用的方法就是上面所說的那些:設計思想、設計原則、設計模式、編程規範等。在每次的重構過程中,靈活運用這些方法論,避免過度優化即可。

  • 重構的目的、對象、時機、方法;
  • 保證重構後不引入新的問題:單元測試和集成測試;

之間的聯繫

  • 面向對象是下面所有方法論的基礎,其核心的4大特性,保證方法論的實現;
  • 設計原則是設計模式的指導思想,許多設計模式都是實現了設計原則;
  • 設計模式就是具體的實現,比設計原則更加的具體好懂;
  • 編程規範更加註重程式碼的細節,更好落地;
  • 編程規範是上面所有的基石,只有保證改完後不出現新的錯誤才是一次好的更改。

討論

哪一部分最重要

我認為是設計原則,因為設計模式是對設計原則的更具體實現,規範的話注重的太細節,重構每次採用的也是這些方法,所以還是原則最重要。

設計模式為什麼要強調是面向對象的設計方法論

所有的或抽象或具體都是根據面向對象的4大特性來抽象出來的。在面向過程或函數式編程等編程模型中,並不是全部適用。

公眾號截圖

文章在公眾號「iceWang」第一手更新,有興趣的朋友可以關注公眾號,第一時間看到筆者分享的各項知識點,謝謝!筆芯!