一、7大設計模式原則 和 23種設計模式
什麼是設計模式?
在軟體工程中,設計模式(design pattern)是對軟體設計中普遍存在的各種問題,所提出的解決方案;
這個術語是由埃裡希·伽瑪(Erich Gamma)等人在1990年代從建築設計領域引入到電腦科學的;
就好比上圖中的 大廈vs簡易房,前者需要設計、而後者因為規模太小、可以跳過設計直接建造。軟體開發也是一樣的道理,大型專案需要一定的軟體設計模式基礎;
設計模式有什麼重要性?
拿實際工作經歷來說,當一個專案開發完後,如果客戶提出增新功能,怎麼辦?
如果專案開發完後,原來程式設計師離職,你接手維護該專案怎麼辦?(程式碼需要強維護性,即可讀性、規範性,接手專案才能快速)
目前程式設計師門檻越來越高,一線IT公司(大廠),都會問你在實際專案中使用過什麼設計模式,怎樣使用的,解決了什麼問題。
設計模式一般出現在專案中哪個階段?答:面向物件(OO)=>功能模組(設計模式+資料結構與演算法)=>框架(這裡也使用到設計模式)=> 架構(伺服器叢集);
如果想成為合格軟體工程師,那就花時間來研究下設計模式是非常必要的;
設計模式原則
所有的(23種)設計模式都需要遵守的原則,稱為:設計模式原則;
設計模式原則,其實就是程式設計師在程式設計時,應當遵守的原則,也是各種設計模式的基礎(即:設計模式之所以這樣設計,其實所依據的就是遵守這7大原則)
設計模式常用的七大原則有:
1. 單一職責原則
2. 介面隔離原則
3. 依賴倒轉(倒置)原則
4. 里氏替換原則
5. 開閉原則
6. 迪米特法則
7. 合成複用原則
注意:這7大原則和及其概念,必須要背,且必須要理解裡面的含義;
設計模式的目
設計模式,是為了讓程式,具有更好的:
1)程式碼重用性(即:相同功能的程式碼,不用多次編寫)
2)可讀性(即:程式設計規範性,便於其他程式設計師的閱讀和理解)
3)可擴充套件性(即:當需要增加新的功能時,非常的方便,稱為可維擴)
4)可靠性(即:當我們增加新的功能後,對原來的功能沒有影響)
5)使程式呈現 高內聚,低耦合 的特性(模組內強依賴,模組間依賴很低)
金句:
設計模式包含了面向物件的精髓,“懂了設計模式,你就懂了面向物件分析和設計(OOA/D)的精要”
Scott Mayers 在其鉅著《Effective C++》 就曾經說過: C++老手和 C++新手的區別就是前者手背上有很多傷疤
下一篇,我們開始講解第一種設計模式原則:單一職責原則;