一,為什麼學習設計模式?
二,什麼是設計模式?
三,怎麼描述設計模式?
四,設計模式有哪幾類?
五,設計模式之間的關係?
六,學習設計模式的四種狀態:
作為攻城獅「設計模式」這個詞應該都不陌生,那麼,你有靜下心來系統的學習它一下嗎?本系列博文描述了物件導向設計模式的實現。之所以取名為 – c#設計模式,是因為我在文章中使用的例項是用c#語言來完成的。當然,你也可以以你熟悉的任意物件導向語言的角度來讀此系列文章也是完全沒有問題的。我將從它的意圖,問題,解決方案,具體案例等多個方面助你掌握每一種設計模式。如果你剛好想系統的學習設計模式,又剛好看到了這篇文章,那麼請和我一起學習一下吧?好的設計模式是可以滿足「應對變化,提高復用」的設計,若你的程式沒有變化,那麼不需要設計模式,你也能將它寫的很;但是目前為止我還做過不需要變化的專案,甚至有時功能剛剛開發一半就有需求變動。當然了更多的是後續功能拓展帶來的變動,而這種變動可以通過設計模式來降低。
設計模式這個詞彙,我剛開始接觸專案的時候就聽說了,可是學習它卻是很久之後的事情(工作兩三年還沒有開始)。那時候一聽說誰在什麼地方用了設計模式,就感覺這個人很厲害。
當我開始學習設計模式時,我發現在不知的情況下已經用過了一些設計模式了(比如:單例模式)。由此可見也許設計模式並沒有我們想想的那麼高深莫測,也許並不需要多少年的程式設計功底,所有為什麼不花些時間來系統的學習它一下呢?
設計模式是軟體設計中常見問題的典型解決方案。 它們就像能根據需求進行調整的預製藍圖, 可用於解決**中反覆出現的設計問題。
設計模式可以幫助設計者更好更快地完成系統設計,也使我們可以更加簡單方便的復用成功的設計和體系結構。
設計模式區別於演算法:因為兩者在概念上都是已知問題的解決方案,所以會容易混淆。可以理解為演算法是實現解決方案具體的實現步驟,而模式是對解決方案的更高層次的描述。
大部分模式都有正規的描述方式, 以便在不同情況下使用。 模式的描述通常會包括以下部分:
不同設計模式的複雜程度、 細節層次以及在整個系統中的應用範圍等方面各不相同。所有模式可以根據其意圖或目的來分為三種主要的模式類別:
建立型模式:提供建立物件的機制, 增加已有**的靈活性和可復用性。
建立型類模式將物件的部分建立工作延遲到子類,而建立型物件模式則將它延遲到另乙個物件中。
結構型模式:介紹如何將物件和類組裝成較大的結構, 並同時保持結構的靈活和高效。
結構型類模式使用繼承機制來組合類,而結構型物件模式則描述了物件的組裝方式。
行為模式:負責物件間的高效溝通和職責委派。
行為樹類模式使用繼承描述演算法和控制流,而行為樹物件模式則描述一組物件怎樣協作完成單個物件所無法完成的任
23種設計模式:
建立型模式
結構型模式
行為模式
這類模式提供建立物件的機制, 能夠提公升已有**的靈活性和可復用性。
這類模式介紹如何將物件和類組裝成較大的結構, 並同時保持結構的靈活和高效。
這類模式負責物件間的高效溝通和職責委派。
單例 singleton
工廠方法 factory method
抽象工廠abstract factory
生成器 builder
原型 prototype
介面卡 adapter
橋接 bridge
組合 composite
裝飾 decorator
外觀 facade
** proxy
享元 flyweight
策略 strategy
責任鏈 chain of responsibility
命令 command
迭代器 iterator
中介者 mediator
備忘錄 memento
觀察者 observer
狀態 state
模板方法 template method
有些設計模式經常綁到一起使用,下圖給出模式關係的圖形說明。
沒學前是一點不懂,根本想不到用設計模式,設計的**很糟 糕;
學了幾個模式後,很開心,於是到處想著要用自己學過的模 式,於是時常造成誤用模式而不自知;
學完全部模式時,感覺諸多模式極其相似,無法分清模式之間 的差異,有困惑,但深知誤用之害,應用之時有所猶豫;
靈活應用模式,甚至不應用具體的某種模式也能設計出非常優
推薦書籍:
《設計模式: 可復用物件導向軟體的基礎》 – gof
《大話設計模式》-- 程杰
《敏捷軟體開發:原則、模式與實踐》-- robertc. martin
《重構:改善既有**設計》-- martin fowler
設計模式之模式概述
本文參考 學習的同時做一下筆記方便以後的檢視和複習。設計模式 這個術語最初並不是出現在軟體設計中,而是被用於建築領域的設計中。1977 年,美國著名建築大師 加利福尼亞大學伯克利分校環境結構中心主任克里斯托夫 亞歷山卓 christopher alexander 在他的著作 建築模式語言 城鎮 建築...
c 設計模式概述之狀態
寫的不夠規範,目的是為了縮短篇幅,實際中請不要這樣做 參看 1 概述 這個有點抽象,我的理解是 行為受到狀態的變化而變化。舉乙個例子,籃球員動員,如果運動員這會兒狀態好,命中率 投球 就會上公升。再比如人的情緒變化,可能會導致不同的行為。比如高興,是動作a,猶豫,動作b。需要用的角色,主要分為2類,...
學習《C 設計模式》 1 設計模式概述
模式是在特定環境下人們解決某類重複出現問題的一套成功或有效的解決方案。設計模式是一套被反覆使用的 多數人知曉的 經過分類編目的 設計經驗的總結 是在特定環境下為解決某一通用軟體設計問題提供的一套定製的解決方案,該方案描述了物件和類之間的相互作用。設計模式一般包含模式名稱 問題 目的 解決方案 效果 ...