可重用的軟件開發經驗-設計模式(基本概念)


  現如今,設計模式已經較前兩年失去了一些關注度和熱度。人們已經把目光投向那些革命性的高科技產品和技術,諸如:iPhone,iPad,雲計算,雲平台,HTML5等等。但是我認為,不管時間如何變化,軟件設計思想永遠隨着時間推移而被人們繼承和發揚光大。

  生活中的很多經驗,都是歷經風雨滄桑,被人們所接受認知並流傳至今。比如:“磨刀不誤砍柴工”,“織網捕魚”,“是騾子是馬,拉出去遛遛”等。不管咋樣,本質思想是不變的。設計模式也是這樣,本質就是那些成功軟件設計師們的寶貴經驗,是經過大量實踐,總結歸納來的。既然生活經驗可以積累繼承,那設計模式也可以在程序設計和開發方面供我們使用。

  那什么是設計模式?我們不需要那些抽象概念,只要記住是一種解決問題的思路,是復雜問題的簡單解決方法就可以了。這只是宏觀上對他進行說明。具體說就是:設計模式是對於在某種環境下軟件設計問題上的可重用的解決方案,目的就是要充分利用已有的軟件開發經驗,解決不同問題。在軟件開發設計的時候我們也是不斷思考,實踐,歸納總結得到一種行之有效的方法,遇到具體問題,拿過來套用把問題解決掉。

  模式不是發明與創造,而是來自我們日常設計開發中的發現與總結,是一種實踐經驗的積累,最終促使我們走向成熟。

  設計模式種類很多,包括分布式編程模式,用戶界面模式,數據模型模式三大類。目前比較流行的是面向對象設計模式GoF(Gang of Four的縮寫)模式,翻譯出來比較邪惡“四人幫”,另一個是GRASP(General Responsibility Assignment Software Pattern)稱為通用職責分配軟件模式。

  GRASP與其說他是模式,不如說他是原則和設計要求。他是干啥的?引用一段文檔上的話很貼切,“GRASP的核心是自己干自己的事,自己只干自己的事,也就是職責分配和實現高內聚。用來解決面向對象設計的一些問題”。

  在OOD中GRASP包括九大設計原則:

  1. 低耦合(Low Coupling)
  2. 高內聚(High Cohesion)
  3. 信息專家(Information Expert)
  4. 創建者(Creator)
  5. 控制器(Controller)
  6. 多態(Polymorphism)
  7. 純虛構(Pure Fabrication)
  8. 間接(Indirection)
  9. 受保護變化(Protected Variation)

  GoF模式,眾所周知包括23種設計模式。

  •  根據目的准則分類
    1. 創建型(Creational)
    2. 結構型(Structural)
    3. 行為型(Behavioral)
  • 根據范圍准則分類
    1. 類模式
    2. 對象模式

  GRASP原則着重考慮設計類的原則及如何分配類的功能,而GoF模式則着重考慮設計的實現、類與類的交互及軟件質量。所以GoF模式是符合GRASP原則的面向對象設計模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM