




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、高品質文檔2022年設計模式心得體會 7月初的一個周末,精確的說應當是7月1號周六,在網上看到一本大話設計模式的書,而且看到許多很好的評論,于是乎,下載了電子書看看,一下子看了幾章之后,對設計模式有了個了解,于是連續上網搜些其他資料,進一步了解設計模式。最終結論:設計模式是個好東西,詳細怎么好,一兩句話是無法概括的,也是從那天起,我就打算學習設計模式,于是就看大話設計模式,至七月十多號,也許看了一百多頁后,感覺有點難,有點看不下去的感覺,于是上網找其他的好方法,無意間發覺了李建忠老師的c#設計模式縱橫談系列講座,微軟的web cast課程,主要講解gof的23個設計模式,每個一講,加上一頭一尾
2、,共25講,試聽了一節課后,感覺很有用,于是就抽時間去邊聽課邊看書,并在我的博客里寫下筆記,依靠加深印象,二來可以督促我的進度。 三個月以來,終于把設計模式學完一遍了,原方案是兩個月學完(一星期三個模式),由于。方案兩個月學完實際花了三個月,感受多多,收獲多多對c#語言有了更進一步的熟悉,對oo的思想有了更全面的了解。 下一步在設計模式方面的方案:鞏固并運用設計模式,鞏固:把大話設計模式,設計模式,設計模式可復用的面對對象基礎,靈敏軟件開發:原則、模式與實踐這些書再結合起來系統的看一看,當然還會去買一些我手頭上沒有的關于設計模式的書;運用:部門前幾天也提倡用c#來改版vb程序,我想這是一個很好
3、的平臺,正好有機會把理論的東西在實際中應用,理論加實際唯一的學習方法。 下面對各個模式再簡潔總結一下: 1、創建型模式: singleton:解決的是實例化對象的個數的問題,比如抽象工廠中的工廠、對象池等,除了singleton之外,其他創建型模式解決的都是 new 所帶來的耦合關系。 abstract factory:創建一系列相互依靠對象,并能在運行時轉變系列。 factory method:創建單個對象,在abstract factory有使用到。 prototype:通過拷貝原型來創建新的對象。 factory method,abstract factory, builder都需要一個
4、額外的工廠類來負責實例化“一邊對象”,而prototype則是通過原型(一個特別的工廠類)來克隆“易變對象”。 假如遇到“易變類”,起初的設計通常從factory method開頭,當遇到更多的簡單變化時,再考慮重構為其他三種工廠模式(factory method,abstract factory, builder)。 2、結構性模式 adapter:注意轉換接口,將不吻合的接口適配對象,用于舊代碼復用、類庫遷移等。 bridge:注意實現抽象和實現的分別,支持對象多維度的變化。 composite:注意同意接口,將“一對多”的關系轉化為“一對一”的關系,屏蔽對象容器內部實現結構,實現對象和對
5、象容器使用的全都性。 decorator:注意穩定接口,在此前提下為對象擴展功能,實現對象功能的擴展,避開子類膨脹。 facade:注意簡化接口,屏蔽各子系統的簡單性,供應更高層接口供客戶訪問。 flyweight:注意保留接口,在內部使用共享技術對對象存儲進行優化(通過共享大量細粒度對象,供應系統性能)。 proxy:注意假借接口,通過增加間接代理,實現更多掌握,屏蔽簡單性。 3 、行為型模式 template method:封裝算法結構,定義算法骨架,支持算法子步驟變化。 strategy:注意封裝算法,支持算法的變化,通過封裝一系列算法,從而可以隨時獨立于客戶替換算法。 state:注意
6、封裝與狀態相關的行為,支持狀態的變化,通過封裝對象狀態,從而在其內部狀態轉變時轉變它的行為。 memento:注意封裝對象狀態變化,支持狀態保存、恢復。 mediator:注意封裝對象間的交互,通過封裝一系列對象之間的簡單交互,使他們不需要顯式相互引用,實現解耦。 chain of responsibility:注意封裝對象責任,支持責任的變化,通過動態構建職責鏈,實現事務處理。 command:注意將懇求封裝為對象,支持懇求的變化,通過將一組行為抽象為對象,實現行為懇求者和行為實現者之間的解耦。 iterator:注意封裝特定領域變化,支持集合的變化,屏蔽集合對象內部簡單結構,供應客戶程序對
7、它的透亮遍歷。 interpreter:注意封裝特定領域變化,支持領域問題的頻繁變化,將特定領域的問題表達為某種語法規章下的句子,然后構建一個解釋器來解釋這樣的句子,從而達到解決問題的目的。 observer:注意封裝對象通知,支持通信對象的變化,實現對象狀態轉變,通知依靠它的對象并更新。 visitor:注意封裝對象操作變化,支持在運行時為類結構添加新的操作,在類層次結構中,在不轉變各類的前提下定義作用于這些類實例的新的操作。 正確對待模式: 設計模式建立在對系統變化點的基礎上進行,哪里有變化,哪里就應用設計模式。 設計模式應當以演化的方式來獲得,系統的變化點往往是經過不斷演化才能精確定位。
8、 不能為了模式而模式,設計模式是一種軟件設計的軟力氣,而非規范標準,不應夸大設計模式的作用。 設計模式心得體會(2): 從一開頭學習設計模式至今已半年有余了,第一次接觸設計模式是一次不經意間在網上看到大話設計模式一書,看了前言了第一章后,就感覺到其誘惑力對于一個程序員來說,是無比巨大的。也許是去年十月份的時候,部門打算成立讀書會,系統學習設計模式。 通過學習設計模式,除了學習到“一些設計模式”,還讓我進一步熟識、鞏固了面對對象思想,進一步熟識了c#語言。我曾多次設想,我們假如引入面對對象思想,并結合設計模式來重寫或改善我們的系統(必需重寫,雖說設計模式只是一種思想,語言只是實現而已,但是選擇一
9、門好的語言,無疑也是特別重要的,而vb6在面對對象方面卻有很大欠缺甚至不具備其條件),那么我們的系統將會像目前一樣需要那么多人來維護嗎? 大話設計模式一書其實是對gof的設計模式可復用面對對象軟件的基礎一書的“翻譯”,讓人更簡單理解,用通俗易懂的語言闡述軟件設計過程中的一些“模式”,在某種特定環境下,用最好的設計方法(代碼高內聚,低耦合,使其有良好的可擴展性和可維護性)達到我們的目的,或許其方法有許多許多,但是查找到最好的方法卻不是件簡單的事,設計模式是對前人的設計閱歷的一個總結,告知我們在某種特定的環境下,這樣的設計師最好的,學習設計模式有助于我們在設計軟件的過程中少走許多彎路。 我對gof
10、的23個設計模式雖然都有看過,但是只有理解,實現,應用及思索之后,才能真正體會其精妙之處,至今體會較深的有以下幾個模式:1. strategy封裝系列“算法”,讓它們之間可以相互替換,“算法”并不是單指數據結構中的算法,在實踐中,它幾乎可以封裝任何類型的規章,這使得策略模式的運用極其廣泛;2. template method有人說是用的做多的模式,只要有抽象類的地方,都可以看到這個模式,它通過把不變行為移到父類中去,去除子類中的重復代碼,從而供應了一個很好的代碼復用平臺;3. facade供應了對基礎架構的統一訪問,削減簡單性,在web編程者中的三層架構,就是此思想,每一層都封裝好一部分功能,
11、供應給上一層統一的方法調用,整個framework體系就是facade模式的封裝,隨著1.0升級到3.5,越來越多簡單的高級功能被封裝,可以說facade無處不在;4. abstract factory供應一個創建一系列相關或相互依靠對象的接口,而無需指定它們詳細的類,咋一看,太抽象了,說個例子,在三層架構中,bll層對dal層的調用會直接用到dal層中的類,假如dal層是分別對sql server,oracle的訪問,bll層需要依據實際狀況打算實例化哪一個dal層中的類,我們又盼望在兩種dal層切換時,bll層和ui層都不做轉變,那么可在bll層和dal層中增加接口層(體現了“抽象”的精神,或者說是“面對接口編程”的最佳體現)和抽象工廠(dalfactroy),讓它來實例化dal層中的實例;5. singleton確保一個類僅有一個實例,并供應一個訪問它的全局訪問點,如單件窗體,點一下menu,彈出一個窗體(實例),在關閉這個新窗體之前,再次點擊該menu,不會再次消失同樣的彈出窗體(實例)。篇幅有限,其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 園林亮化施工方案范本
- 石家莊地面防腐施工方案
- 寧夏職業技術學院《歐美文學史AⅡ》2023-2024學年第二學期期末試卷
- 江西科技職業學院《藥用植物與生藥學》2023-2024學年第二學期期末試卷
- 浙江音樂學院《水利工程概預算》2023-2024學年第二學期期末試卷
- 南京工業職業技術大學《化工制圖與AutoCAD》2023-2024學年第二學期期末試卷
- 漳州職業技術學院《PLC與電氣控制》2023-2024學年第二學期期末試卷
- 2025至2031年中國毛刷膠輥行業投資前景及策略咨詢研究報告
- 內蒙古工業大學《電子商務雙語》2023-2024學年第二學期期末試卷
- 城鎮道路基礎施工方案
- 梁思成《千篇一律與千變萬化》(課件)
- 泵車作業安全協議書
- 智能汽車傳感器技術-激光雷達
- 武漢市建設工程施工合同管理辦法暫行
- 急救醫藥箱藥品清單
- 突發性聾診療指南
- 南方少數民族傳統合唱精講智慧樹知到答案章節測試2023年四川音樂學院
- 35kv電纜敷設施工方案正式版
- 漁家傲(天接云濤連曉霧)說課稿
- GB/T 3098.26-2021緊固件機械性能平墊圈
- GB/T 30220-2013游樂設施安全使用管理
評論
0/150
提交評論