設(shè)計(jì)模式心得體會(huì)_第1頁
設(shè)計(jì)模式心得體會(huì)_第2頁
設(shè)計(jì)模式心得體會(huì)_第3頁
設(shè)計(jì)模式心得體會(huì)_第4頁
設(shè)計(jì)模式心得體會(huì)_第5頁
已閱讀5頁,還剩3頁未讀,

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、設(shè)計(jì)模式心得體會(huì)7 月初的一個(gè)周末,準(zhǔn)確的說應(yīng)該是 7 月 1 號(hào)周六,在 網(wǎng)上看到一本大話設(shè)計(jì)模式的書,而且看到很多很好的 評(píng)論,于是乎,下載了電子書看看,一下子看了幾章之后, 對(duì)設(shè)計(jì)模式有了個(gè)了解,于是繼續(xù)上網(wǎng)搜些其他資料,進(jìn)一 步了解設(shè)計(jì)模式。 。最終結(jié)論:設(shè)計(jì)模式是個(gè)好東西,具體 怎么好,一兩句話是無法概括的,也是從那天起,我就決定 學(xué)習(xí)設(shè)計(jì)模式, 于是就看大話設(shè)計(jì)模式 ,至七月十多號(hào), 大概看了一百多頁后,感覺有點(diǎn)難,有點(diǎn)看不下去的感覺, 于是上網(wǎng)找其他的好方法,無意間發(fā)現(xiàn)了李建忠老師的 c# 設(shè)計(jì)模式縱橫談系列講座,微軟的 web cast 課程,主要 講解 gof 的 23 個(gè)設(shè)

2、計(jì)模式,每個(gè)一講,加上一頭一尾,共 25 講,試聽了一節(jié)課后,感覺很有用,于是就抽時(shí)間去邊聽 課邊看書,并在我的博客里寫下筆記,依賴加深印象,二來 可以督促我的進(jìn)度。 。三個(gè)月以來,總算把設(shè)計(jì)模式學(xué)完一遍了,原計(jì)劃是兩 個(gè)月學(xué)完(一星期三個(gè)模式) ,由于。計(jì)劃兩個(gè)月學(xué)完實(shí) 際花了三個(gè)月, 感觸多多, 收獲多多對(duì) c# 語言有了更進(jìn) 一步的認(rèn)識(shí),對(duì) oo 的思想有了更全面的了解。 。下一步在設(shè)計(jì)模式方面的計(jì)劃:鞏固并運(yùn)用設(shè)計(jì)模式, 鞏固:把大話設(shè)計(jì)模式 ,設(shè)計(jì)模式 ,設(shè)計(jì)模式可 復(fù)用的面向?qū)ο蠡A(chǔ) ,敏捷軟件開發(fā): 原則、模式與實(shí)踐 這些書再結(jié)合起來系統(tǒng)的看一看,當(dāng)然還會(huì)去買一些我手頭 上沒有的

3、關(guān)于設(shè)計(jì)模式的書; 運(yùn)用: 部門前幾天也提倡用 c# 來改版 vb 程序,我想這是一個(gè)很好的平臺(tái),正好有機(jī)會(huì)把 理論的東西在實(shí)際中應(yīng)用,理論加實(shí)際唯一的學(xué)習(xí)方 法。下面對(duì)各個(gè)模式再簡單總結(jié)一下:1、創(chuàng)建型模式:singleton :解決的是實(shí)例化對(duì)象的個(gè)數(shù)的問題,比如 抽象工廠中的工廠、對(duì)象池等,除了 singleton 之外,其他 創(chuàng)建型模式解決的都是 new 所帶來的耦合關(guān)系。abstract factory :創(chuàng)建一系列相互依賴對(duì)象,并能在 運(yùn)行時(shí)改變系列。factory method:創(chuàng)建單個(gè)對(duì)象,在abstract factory有使用到。prototype :通過拷貝原型來創(chuàng)建新的

4、對(duì)象。factory method , abstract factory, builder都需要一個(gè)額外的工廠類來負(fù)責(zé)實(shí)例化 “一邊對(duì)象” ,而 prototype 則是通過原型(一個(gè)特殊的工廠類)來克隆“易變對(duì)象” 。如果遇到 “易變類” ,起初的設(shè)計(jì)通常從 factory method 開始,當(dāng)遇到更多的復(fù)雜變化時(shí),再考慮重構(gòu)為其他三種工 廠模式( factory method , abstract factory, builder)。2、結(jié)構(gòu)性模式adapter :注重轉(zhuǎn)換接口,將不吻合的接口適配對(duì)象, 用于舊代碼復(fù)用、類庫遷移等。bridge :注重實(shí)現(xiàn)抽象和實(shí)現(xiàn)的分離,支持對(duì)象多維度

5、 的變化。composite :注重同意接口,將“一對(duì)多”的關(guān)系轉(zhuǎn)化 為“一對(duì)一”的關(guān)系,屏蔽對(duì)象容器內(nèi)部實(shí)現(xiàn)結(jié)構(gòu),實(shí)現(xiàn)對(duì) 象和對(duì)象容器使用的一致性。decorator :注重穩(wěn)定接口,在此前提下為對(duì)象擴(kuò)展功 能,實(shí)現(xiàn)對(duì)象功能的擴(kuò)展,避免子類膨脹。facade :注重簡化接口,屏蔽各子系統(tǒng)的復(fù)雜性,提供 更高層接口供客戶訪問。flyweight :注重保留接口,在內(nèi)部使用共享技術(shù)對(duì)對(duì) 象存儲(chǔ)進(jìn)行優(yōu)化 (通過共享大量細(xì)粒度對(duì)象, 提供系統(tǒng)性能) 1 2 3proxy :注重假借接口,通過增加間接代理,實(shí)現(xiàn)更多 控制,屏蔽復(fù)雜性。3 、行為型模式template method :封裝算法結(jié)構(gòu),定義

6、算法骨架,支 持算法子步驟變化。strategy :注重封裝算法,支持算法的變化,通過封裝 一系列算法,從而可以隨時(shí)獨(dú)立于客戶替換算法。state :注重封裝與狀態(tài)相關(guān)的行為, 支持狀態(tài)的變化,通過封裝對(duì)象狀態(tài),從而在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。memento:注重封裝對(duì)象狀態(tài)變化,支持狀態(tài)保存、恢 復(fù)。mediator :注重封裝對(duì)象間的交互,通過封裝一系列對(duì) 象之間的復(fù)雜交互, 使他們不需要顯式相互引用, 實(shí)現(xiàn)解耦chain of responsibility:注重封裝對(duì)象責(zé)任,支持責(zé)任的變化,通過動(dòng)態(tài)構(gòu)建職責(zé)鏈,實(shí)現(xiàn)事務(wù)處理。command注重將請(qǐng)求封裝為對(duì)象,支持請(qǐng)求的變化,通過將一

7、組行為抽象為對(duì)象,實(shí)現(xiàn)行為請(qǐng)求者和行為實(shí)現(xiàn)者 之間的解耦。iterator :注重封裝特定領(lǐng)域變化,支持集合的變化,屏蔽集合對(duì)象內(nèi)部復(fù)雜結(jié)構(gòu),提供客戶程序?qū)λ耐该鞅闅v。interpreter :注重封裝特定領(lǐng)域變化,支持領(lǐng)域問題的頻繁變化,將特定領(lǐng)域的問題表達(dá)為某種語法規(guī)則下的句 子,然后構(gòu)建一個(gè)解釋器來解釋這樣的句子,從而達(dá)到解決 問題的目的。observer :注重封裝對(duì)象通知,支持通信對(duì)象的變化, 實(shí)現(xiàn)對(duì)象狀態(tài)改變,通知依賴它的對(duì)象并更新。visitor :注重封裝對(duì)象操作變化,支持在運(yùn)行時(shí)為類結(jié)構(gòu)添加新的操作,在類層次結(jié)構(gòu)中,在不改變各類的前提 下定義作用于這些類實(shí)例的新的操作。正確

8、對(duì)待模式: 設(shè)計(jì)模式建立在對(duì)系統(tǒng)變化點(diǎn)的基礎(chǔ)上進(jìn)行,哪里有變 化,哪里就應(yīng)用設(shè)計(jì)模式。設(shè)計(jì)模式應(yīng)該以演化的方式來獲得,系統(tǒng)的變化點(diǎn)往往 是經(jīng)過不斷演化才能準(zhǔn)確定位。不能為了模式而模式,設(shè)計(jì)模式是一種軟件設(shè)計(jì)的軟力 量,而非規(guī)范標(biāo)準(zhǔn),不應(yīng)夸大設(shè)計(jì)模式的作用。設(shè)計(jì)模式心得體會(huì)( 2):從一開始學(xué)習(xí)設(shè)計(jì)模式至今已半年有余了,第一次接觸 設(shè)計(jì)模式是一次不經(jīng)意間在網(wǎng)上看到 大話設(shè)計(jì)模式 一書, 看了前言了第一章后,就感覺到其誘惑力對(duì)于一個(gè)程序員來 說,是無比巨大的。大概是去年十月份的時(shí)候,部門決定成 立讀書會(huì),系統(tǒng)學(xué)習(xí)設(shè)計(jì)模式。通過學(xué)習(xí)設(shè)計(jì)模式,除了學(xué)習(xí)到“一些設(shè)計(jì)模式” ,還 讓我進(jìn)一步熟悉、鞏固了面

9、向?qū)ο笏枷耄M(jìn)一步熟悉了 c# 語言。我曾多次設(shè)想,我們?nèi)绻朊嫦驅(qū)ο笏枷耄⒔Y(jié) 合設(shè)計(jì)模式來重寫或改善我們的系統(tǒng)(必須重寫,雖說設(shè)計(jì) 模式只是一種思想,語言只是實(shí)現(xiàn)而已,但是選擇一門好的 語言,無疑也是非常重要的,而 vb6 在面向?qū)ο蠓矫鎱s有很 大欠缺甚至不具備其條件) ,那么我們的系統(tǒng)將會(huì)像目前一 樣需要那么多人來維護(hù)嗎?大話設(shè)計(jì)模式一書其實(shí)是對(duì) gof 的設(shè)計(jì)模式可復(fù)用面向?qū)ο筌浖幕A(chǔ)一書的“翻譯” ,讓人更容易 理解,用通俗易懂的語言闡述軟件設(shè)計(jì)過程中的一些 “模式”, 在某種特定環(huán)境下,用最好的設(shè)計(jì)方法(代碼高內(nèi)聚,低耦 合,使其有良好的可擴(kuò)展性和可維護(hù)性)達(dá)到我們的目的, 或

10、許其方法有很多很多,但是尋找到最好的方法卻不是件容 易的事,設(shè)計(jì)模式是對(duì)前人的設(shè)計(jì)經(jīng)驗(yàn)的一個(gè)總結(jié),告訴我 們?cè)谀撤N特定的環(huán)境下,這樣的設(shè)計(jì)師最好的,學(xué)習(xí)設(shè)計(jì)模 式有助于我們?cè)谠O(shè)計(jì)軟件的過程中少走很多彎路。 123我對(duì) gof 的 23 個(gè)設(shè)計(jì)模式雖然都有看過,但是只有理 解,實(shí)現(xiàn),應(yīng)用及思考之后,才能真正體會(huì)其精妙之處,至 今體會(huì)較深的有以下幾個(gè)模式: 1. strategy 封裝系列 “算法”,讓它們之間可以相互替換, “算法”并不是單指數(shù) 據(jù)結(jié)構(gòu)中的算法,在實(shí)踐中,它幾乎可以封裝任何類型的規(guī) 則,這使得策略模式的運(yùn)用極其廣泛; 2. template method 有人說是用的做多的模式,

11、只要有抽象類的地方,都可 以看到這個(gè)模式,它通過把不變行為移到父類中去,去除子 類中的重復(fù)代碼,從而提供了一個(gè)很好的代碼復(fù)用平臺(tái); 3. facade 提供了對(duì)基礎(chǔ)架構(gòu)的統(tǒng)一訪問,減少復(fù)雜性,在 web 編程者中的三層架構(gòu),就是此思想,每一層都封裝好一部分功能,提供給上一層統(tǒng)一的方法調(diào)用,整個(gè) framework 體系就是 facade 模式的封裝,隨著升級(jí)到,越來越多復(fù)雜 的高級(jí)功能被封裝,可以說 facade 無處不在; 4. abstract factory 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接 口,而無需指定它們具體的類,咋一看,太抽象了,說個(gè)例 子,在三層架構(gòu)中, bll 層對(duì)

12、dal 層的調(diào)用會(huì)直接用到 dal 層中的類,如果 dal 層是分別對(duì) sql server , oracle 的訪 問, bll 層需要根據(jù)實(shí)際情況決定實(shí)例化哪一個(gè) dal 層中的 類,我們又希望在兩種 dal 層切換時(shí), bll 層和 ui 層都不做 改變,那么可在 bll 層和 dal 層中增加接口層(體現(xiàn)了“抽 象”的精神,或者說是“面向接口編程”的最佳體現(xiàn))和抽 象工廠( dalfactroy ),讓它來實(shí)例化 dal 層中的實(shí)例; 5. singleton 確保一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問 它的全局訪問點(diǎn),如單件窗體,點(diǎn)一下menu,彈出一個(gè)窗體(實(shí)例),在關(guān)閉這個(gè)新窗體之前,再次點(diǎn)擊該menu,不會(huì)再次出現(xiàn)同樣的彈出窗體 (實(shí)例) 。篇幅有限,其他模式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論