GOF设计模式
文章目錄
- 前言
- 一、設計模式是什么?
- 二、它的意義
- 三、軟件設計模式的基本要素
- 四、GoF 的 23 種設計模式的分類和功能
- 五、OCP七大原則
- 總結
前言
設計模式這一詞語對于從事軟件開發者行業的猿友們來說并不陌生,基本上在工作時時常都在用到,那么在講解具體的設計模式之間我想說一下我是怎么看待設計模式的!
一、設計模式是什么?
??官方的說法是:軟件設計模式(Software Design Pattern),又稱設計模式,是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。它描述了在軟件設計過程中的一些不斷重復發生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的代碼設計經驗的總結,具有一定的普遍性,可以反復使用。
??但我接觸設計模式后:我覺得它是一種思考問題的邏輯方法,是用于解決特定邏輯性問題的解決方案,所以它的學習難度是比較高的,需要通過不斷的使用,來試錯,完成最后的合理使用。
二、它的意義
??對類的封裝性、繼承性和多態性以及類的關聯關系和組合關系的充分理解。
??沒錯它的意義就是這個,怎么說了很抽象,但是的確如此,如果想要真正的在開發者行業中能走遠,我覺得開發者必須要對類的封裝性、繼承性和多態性這些有著充足的理解的實現手段,這對于一個真正的開發產品來說是保障其安全性、可擴展性最基礎的保障。
三、軟件設計模式的基本要素
最關鍵的元素包括以下 4 個主要部分:
??模式名稱
通常用一兩個詞來描述,可以根據模式的問題、特點、解決方案、功能和效果來命名。
??問題
問題(Problem)描述了該模式的應用環境,即何時使用該模式。它解釋了設計問題和問題存在的前因后果,以及必須滿足的一系列先決條件。
??解決方案
模式問題的解決方案(Solution)包括設計的組成成分、它們之間的相互關系及各自的職責和協作方式。
??效果
描述了模式的應用效果以及使用該模式應該權衡的問題,即模式的優缺點。
四、GoF 的 23 種設計模式的分類和功能
根據目的來分:
??創建型模式:用于描述“怎樣創建對象”,它的主要特點是“將對象的創建與使用分離”。GoF 中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種創建型模式。
??結構型模式:用于描述如何將類或對象按某種布局組成更大的結構,GoF 中提供了代理、適配器、橋接、裝飾、外觀、享元、組合等 7 種結構型模式。
??行為型模式:用于描述類或對象之間怎樣相互協作共同完成單個對象都無法單獨完成的任務,以及怎樣分配職責。GoF 中提供了模板方法、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄、解釋器等 11 種行為型模式
我們重點看一下:單例、抽象工廠、代理、裝飾、職責鏈和觀察者這六種設計模式。
五、OCP七大原則
??對擴展開發,對修改關閉
??繼承必須確保超類所擁有的性質在子類中仍然成立
??要面向接口編程,不要面向實現編程
??控制類的粒度大小、將對象解耦、提高其內聚性
??要為各個類建立它們需要的專用接口
??只與你的直接朋友交談,不跟“陌生人”說話
??盡量先使用組合或者聚合等關聯關系來實現,其次才考慮使用繼承關系來實現。
這7大原則是我們在開發程序的時候嚴格遵照的原則,是一個好的開發程序的基本要求和保障。當然并不是一定要完全遵循所有原則,因為確實蠻難的,我覺得沒有個五六年開發經驗,根本沒法完成。當然并不絕對,畢竟天才也不少。
總結
軟件設計模式是多年以來無數前輩們總結出來的經驗,對編程有著非常重要的作用,能避免我們這些才剛入行的猿友們在開發時出現過多的錯誤。
總結
- 上一篇: 微信小程序怎么取mysql_微信小程序如
- 下一篇: Educational Codeforc