成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學習 GoF 設計模式以解決軟件設計中的問題

開發 前端
設計模式是針對常見軟件設計問題的一組久經考驗的解決方案。即使從未遇到過這些問題,學習設計模式仍然很有價值,因為它教會我們如何使用面向對象設計的原則解決各種問題。

“不考慮變化的設計可能會在未來面臨重大的重新設計風險。” :埃里希伽瑪

在面向對象設計中,模式是常見問題的一種典型解決方案。當一個解決方案在各種項目中一次又一次地出現時,最終會有人為其命名并詳細描述它。這就是發現模式的方式。

模式就像預制的藍圖,我們可以對其進行自定義以解決代碼中反復出現的問題。模式不是一段特定的代碼,而是解決特定問題的一般思路或者概念。我們可以遵循模式詳細信息,并實施適合程序的解決方案。

1995 年,Erich Gamma、John Vlissides、Ralph Johnson 和 Richard Helm 出版了《Design Patterns: Elements of Reusable Object-Oriented Software》一書(中文:設計模式:可復用面向對象軟件設計),他們將設計模式應用于編程。由于名字太長,它被稱為GOF書或四人幫的書。

為什么要學習這些設計模式

設計模式是針對常見軟件設計問題的一組久經考驗的解決方案。即使從未遇到過這些問題,學習設計模式仍然很有價值,因為它教會我們如何使用面向對象設計的原則解決各種問題。

通過提供模式術語,設計模式還可以促進團隊成員之間的溝通。

設計模式的分類

設計模式分為三大類:

  1. 創建模式:提供對象創建機制,增加了現有代碼的靈活性和重用性。
  2. 結構模式:解釋了如何將對象和類組裝成更大的結構,同時保持結構的靈活性和效率。
  3. 行為模式:負責對象之間的有效溝通和職責分配。

創建設計模式

創建模式提供了各種對象創建機制,增加了現有代碼的靈活性和重用性。

GoF 設計模式中定義了 5 種創建設計模式:

  1. 單例:單例是一種創建設計模式,它確保一個類只有一個實例,并為這個實例提供一個全局訪問點。
  2. 工廠:工廠方法是一種創建型設計模式,它提供了在超類中創建對象的接口,同時允許子類更改創建的對象類型。
  3. 抽象工廠:抽象工廠是一種創建設計模式,它允許生成相關對象的類,而無需指定它們的具體類。
  4. 構建器:構建器是一種創建設計模式,可逐步構建復雜的對象。可以使用相同的構造代碼創建對象的不同類型和表示。
  5. 原型:原型是一種創建設計模式,它允許您復制現有對象,而不會使您的代碼依賴于它們的類。

結構設計模式

結構設計模式解釋了如何將對象和類組裝成更大的結構,同時保持它們的靈活性和效率。

GoF 設計模式中定義了 7 種結構設計模式:

  1. 適配器:適配器是一種結構設計模式,它允許具有不兼容接口的對象進行通信。
  2. 復合:復合是一種結構設計模式,它允許您將對象組合成樹結構,然后像處理單個對象一樣使用這些結構。
  3. 代理: 代理是一種結構設計模式,允許提供占位符或替代另一個對象。使用代理,可以控制對原始對象的訪問,允許在請求被傳遞到原始對象之前或之后執行某些操作。
  4. 享元:使用享元,可以通過在多個對象之間共享狀態的公共部分而不是將所有數據保留在每個對象中,將更多對象放入 RAM。
  5. 外觀:外觀是一種設計模式,它為庫、框架或任何其他類集提供簡化的接口。
  6. 橋接: 允許將一個大類或一組密切相關的類拆分為兩個獨立的層次結構:抽象和實現,以獨立開發。
  7. 裝飾器:使用裝飾器設計模式,可以通過將新行為放置在包含新行為的特殊包裝對象中來將新行為附加到對象。

行為設計模式

行為模式涉及算法和對象之間的職責分配。

GoF 設計模式中定義了 11 種行為設計模式:

  1. 模板方法?:模板方法在超類中定義了算法的骨架,允許子類在不修改其結構的情況下覆蓋特定步驟。
  2. 中介者?:使用中介者,可以減少對象之間的混亂依賴。該模式限制了對象之間的直接通信,并迫使它們僅通過中介進行協作。
  3. 責任鏈:責任?鏈允許您沿著處理程序鏈傳遞請求。收到請求后,每個處理程序決定是處理請求還是將其傳遞給鏈中的下一個處理程序。
  4. 觀察者?:觀察者模式允許你定義一種機制來通知多個對象他們正在觀察的對象發生的事件。
  5. 策略?:使用策略,可以定義一系列算法,將它們放入不同的類,并使它們的對象可互換。
  6. 命令?:命令是一種行為設計模式,它將請求轉換為包含有關它們的所有信息的獨立對象。通過這種轉換,您可以使用各種請求參數化方法,延遲或排隊請求的執行,并支持可撤消的操作。
  7. 狀態?:作為一種行為設計模式,狀態允許對象在其內部狀態發生變化時改變其行為。看起來好像對象改變了它的類。
  8. 訪問者?:使用訪問者模式,您可以將算法與它們操作的對象分開。
  9. 解釋器?:解釋器是一種行為設計模式
    ,它定義了一種語言的語法表示,并提供了一個解釋器來處理這種語法。
  10. 迭代器?:一種稱為迭代器的行為設計模式允許您遍歷集合的元素而不暴露它們的底層表示。
  11. 備忘錄 : 備忘錄模式允許保存和恢復對象的先前狀態,而無需透露其實現細節。

以上是23種模式的簡介,在接下來一個月的文章中,我們一起來詳細學習這些設計模式。

責任編輯:姜華 來源: 今日頭條
相關推薦

2019-08-12 14:45:50

軟件設計Java

2011-07-14 14:46:46

設計模式

2010-08-11 09:15:07

設計模式Python

2013-06-07 11:31:36

面向對象設計模式

2023-10-19 13:43:00

設計模式軟件設計

2017-08-28 15:00:20

軟件系統架構風格

2011-07-21 14:33:02

設計模式

2013-05-08 09:12:44

2022-07-10 07:48:26

緩存軟件設計

2010-06-08 13:29:29

UML技術

2010-06-24 14:39:09

HART協議

2010-12-27 10:03:29

軟件設計師

2019-11-07 15:55:51

軟件設計稀缺型人才

2012-06-07 10:17:55

軟件設計設計原則Java

2010-06-28 15:23:43

SNMP協議

2012-07-24 12:47:37

軟件設計架構設計

2012-07-10 02:01:53

設計模式命令模式

2014-04-30 12:18:07

軟件設計

2021-11-23 20:41:05

對象軟件設計

2022-02-16 07:32:10

性能代碼編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产视频网站 | 国产成人影院 | 成人一区二区三区在线观看 | 国产在线视频一区二区 | 国产福利在线 | 亚洲视频免费 | 96久久久久久 | 久久久久成人精品免费播放动漫 | 欧美在线成人影院 | 免费不卡av | 中文字幕蜜臀 | 免费精品久久久久久中文字幕 | 中文字幕在线一 | 欧美日韩成人影院 | 99热99 | 人人看人人爽 | 午夜视频免费网站 | av网站免费在线观看 | 在线观看国产h | 国产99久久久国产精品 | 五月天激情电影 | 在线a视频网站 | 亚洲综合在线播放 | 国产美女在线精品免费 | 亚洲国产成人精品女人久久久 | 天天干天天干 | 欧美精品一区在线 | 欧美一区二区免费在线 | 亚洲另类春色偷拍在线观看 | 欧美日韩在线一区二区三区 | 日韩在线一区二区三区 | 国产一区二区三区四区三区四 | 精品免费国产视频 | 99福利在线观看 | 精品在线一区 | 久久久精品一区 | 99精品欧美一区二区蜜桃免费 | 亚洲激情在线观看 | 一级片网址 | 成人在线免费网站 | 在线视频成人 |