01 GOF设计模式的定义和分类
生活随笔
收集整理的這篇文章主要介紹了
01 GOF设计模式的定义和分类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
GOF設計模式的定義和分類
-
設計模式的出現可以讓開發人員站在前人的肩膀上,通過一些成熟的設計方案來指導新項目的設計和開發,以便于開發出具有更好的靈活性和可拓展性,以便易于復用的軟件系統。
-
GOF:Gang of Four。創立23種設計模式的四位創始人。
1> 設計模式的定義
-
設計模式是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。
-
面向對象設計模式是“好的面向對象設計”,即是那些可以滿足“應對變化,提高復用”的設計。
2> 設計模式的基本要素
2.1 模式名稱
- 模式名稱通過一兩個詞來描述模式的問題,解決方案和效果,以便用戶更好地理解并方便開發人員之間的交流,一般模式是根據其功能或模式結構來命名的。
2.2 問題
- 問題是描述了應該在何時使用模式,包含了原始設計中存在的問題以及問題存在的原因。一般是一些特定的設計問題。
2.3 解決方案
- 解決方案描述了設計模式的組成成分,以及這些組成成分之間的相互關系,各自的職責和寫作方式。模板是一個通用的模板,可以適用于不同的場合。
2.4 效果
- 效果描述了模式的應用情況以及在使用設計模式時應權衡的問題。
3>重新認識面向對象
-
從宏觀層面來看,面向對象的構建方式更能適應軟件的變化,能將變化所帶來的影響減為最小
-
從微觀層面來看,面向對象的方式更強調各個類的“責任”,新增員工類型不會影響原來員工類型的實現代碼一這更符合真實的世界,也更能控制變化所影響的范圍,華竟Engineer類不應該為新增的“鐘點工”來買單…
3.1 對象是什么?
- 從概念層面講,對象是某種擁有責任的抽象。
- 從規格層面講,對象是一系列可以被其他對象使用的公共接口。
- 從語言實現層面來看,對象封裝了代碼和數據。
4> 從設計原則到設計模式
針對接口編程,而不是針對實現編程
- 客戶無需知道所使用對象的特定類型,只需要知道對象擁有客戶所期望的接口。
優先使用對象組合,而不是類繼承
- 類繼承通常為“白箱復用”,對象組合通常為“黑箱復用”。繼承在某種程度上破壞了封裝性,子類父類耦合度高;而對象組合則只要求被組合的對象具有良好定義的接口,耦合度低。
封裝變化點
- 用封裝來創建對象之間的分界層,讓設計者可以在分界層的一側進行修改,使來會對另一側產生不良的影響,從需實現層次間的松耦合。
使用重構得到模式設計——模式的應用不宜先入為主
- 一上來就使用設計模式是對設計模式的最大誤用。沒有一步到位的設計模式。敏捷軟件開發實踐提倡的"Refactoring to Patterns"是目前普遍公認的最好的使用設計模式的方法。
5> 模式分類
-
從目的來看:
- 創建型(Creational) 模式: 負責對象創建。
- 結構型( Structural)模式: 處理類與對象間的組合。
- 行為型( Behavioral)模式: 類與對象交互中的職責分配。
-
從范圍來看:
- 類模式處理類與子類的靜態關系。
- 對象模式處理對象間的動態關系。
總結
以上是生活随笔為你收集整理的01 GOF设计模式的定义和分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 实现随机字符串,可作为随机密码
- 下一篇: asp.net ajax控件工具集 Au