03.06 程序員經常說的設計模式到底是什麼?

影子書屋


程序員經常說的設計模式到底是什麼?

設計模式是解決軟件設計中常見問題的通用可重複解決方案。設計模式不是可以直接轉換為代碼的最終設計。它是如何解決可在許多不同情況下使用的問題的描述或模板。

最近喜歡玩魔方,自己探索魔方很難去快速完成,甚至是無法完成。需要根據公式,公式可以解決各種情況下的問題。而公式就是類似於程序員中說的設計模式。

設計模式的用途

設計模式可以通過提供經過測試的,經過驗證的開發範例來加快開發過程。有效的軟件設計需要考慮直到實施的後期才變得可見的問題。重用設計模式有助於防止可能引起重大問題的細微問題,並提高熟悉模式的編碼人員和架構師的代碼可讀性。

通常,人們只瞭解如何將某些軟件設計技術應用於某些問題。這些技術很難應用於更廣泛的問題。設計模式提供了通用的解決方案,並以不需要特定細節的格式記錄下來。

另外,模式允許開發人員使用眾所周知的,易於理解的名稱進行軟件交互。常見的設計模式可以隨著時間的流逝而得到改進,使其比臨時設計更強大。


極客架構


設計模式是超越基本語法更高階層的內容 ,它並僅限於固定的書本知識,還有開發者的思維模式。

當我們學習一門編程語言時,開始都會學習運算符、標識符、控制語句、函數等,千篇一律,但是這些又是學習一門語言最基本的。

但是,學會這些就能夠寫出優秀的代碼嗎?

顯然,答案是否定的。

“會一門編程語言”和“寫出優秀代碼”中間相差十萬八千里,這其中就是設計模式。

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。

這是搜狗百科的解釋,也許有點繞,我們可以來提煉一下,其中關鍵詞如下,

  • 反覆使用

  • 經驗

所以,它並不是千篇一律的東西,而是經過長久基類的經驗。

設計模式中有很多,例如,代理模式、工程模式、原型模式、單例模式等。其實,我們不用這些也能夠實現一項功能,但是,如果需要代碼維護成本更低、後期擴展更加容易,那麼就必須考慮使用設計模式。

例如,代理模式,Spring中使用的AOP(面向切面)主要使用的思想就是動態代理,它把原本縱向編程模式改成了橫向編程,這樣有哪些好處?

我們通過代理對外暴露一個接口,這樣當我們要對原本功能擴展功能,例如,添加日誌,就不需要再去改動源代碼,只需要通過代理去為其動態的添加一些方法。當然,我們不使用代理,直接去修改源代碼也可以實現,但是這樣會有很大風險,比如,影響到原本功能、出現未知bug、部署成本較高等。

簡而言之,設計模式是一種讓開發項目更加高效、更加簡便的一種軟件設計思想。


Jackpop


設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路。即在某些場景下,針對某類問題的某種通用的解決方案。

項目中合理的運用設計模式可以完美的解決很多問題,今天我們簡單說下創建型模式中的6個設計模式:

1、單例模式:某個類只能有一個實例,提供一個全局的訪問點。

2、簡單工廠:一個工廠類根據傳入的參量決定創建出那一種產品類的實例。

3、工廠方法:定義一個創建對象的接口,讓子類決定實例化那個類。

4、抽象工廠:創建相關或依賴對象的家族,而無需明確指定具體類。

5、建造者模式:封裝一個複雜對象的構建過程,並可以按步驟構造。

6、原型模式:通過複製現有的實例來創建新的實例。

希望以上的回答對你有幫助!


北大青鳥中博軟件學院


設計模式是解決軟件開發某些特定問題而提出的一些解決方案也可以理解成解決問題的一些思路。通過設計模式可以幫助我們增強代碼的可重用性、可擴充性、 可維護性、靈活性好。我們使用設計模式最終的目的是實現代碼的 高內聚 和 低耦合。

項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。

總共有 23 種設計模式。這些模式可以分為三大類:創建型模式(Creational Patterns)、結構型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。

創建型模式:對象實例化的模式,創建型模式用於解耦對象的實例化過程。

結構型模式:把類或對象結合在一起形成一個更大的結構。

行為型模式:類和對象如何交互,及劃分責任和算法。


23種設計模式:


IT老田


設計模式就是根據無數人的經驗打磨出來的用來解決問題的方法,也許不是最有效的,但因為是許多人的心血,所以偶爾取之是可以的。如果為了能夠更好的運用設計模式而去刻意的練習,那麼,下下之選!

編程本就是為了解決實際的問題而生的,如果為了編程而編程的話,那真的是有些悲哀了。所以如果一個問題產生了,就請先找到最有效的辦法,即便這個最有效的辦法,是自己想出來的。請大膽去做!


分享到:


相關文章: