框架、架構和設計模式?!

  • 先來看看框架、架構和設計模式的概念:

1.框架

框架(Framework)是一個框子——指其約束性,也是一個架子——指其支撐性。IT語境中的框架,特指爲解決一個開放性問題而設計的具有一定約束性的支撐結構。在此結構上可以根據具體問題擴展、安插更多的組成部分,從而更迅速和方便地構建完整的解決問題的方案。

也就是說:1)框架本身一般不完整到可以解決特定問題;2)框架天生就是爲擴展而設計的;3)框架裏面可以爲後續擴展的組件提供很多輔助性、支撐性的方便易用的實用工具(utilities),也就是說框架時常配套了一些幫助解決某類問題的庫(libraries)或工具(tools)。 

2.架構

架構不是軟件,而是關於軟件如何設計的重要策略。軟件架構決策設計到如何將軟件系統分解成不同的部分、各部分之間的靜態結構關係和動態交互關係等。經過完整的開發過程之後,這些架構決策將體現在最終開發出的軟件系統中;當然,引入軟件架構之後,整個開發過程變成了“分兩步走”,而架構決策往往會體現在框架之中。或許,人們常把架構和框架混爲一談的原因就在於此吧!我們不能指着某些代碼,說這就是軟件架構,因爲軟件架構是比具體代碼高一個抽象層次的概念。架構勢必被代碼所體現和遵循,但任何一段具體的代碼都代表不了架構。

3.設計模式

設計模式(英語 design pattern)是對面向對象設計中反覆出現的問題的解決方案。又稱設計模式,是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。

  • 接下來,具體分析:

初學時,框架、架構和設計模式的概念容易被混淆,其實它們之間還是有區別的。框架通常是代碼重用,設計模式是設計重用,而架構則介於兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即爲專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性。

設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或複用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以說,框架是軟件,而設計模式是軟件的知識。

框架和架構的出現,都是爲了解決軟件系統日益複雜所帶來的困難而採取“分而治之”思維的結果-----先大局後局部,就出現了架構;先通用後專用,就出現了框架。下圖很好地揭示了這一點。架構是問題的抽象解決方案,它關注大局而忽略細節;而框架是通用半成品,還必須根據具體需求進一步定製開發才能變成應用系統。

簡而言之,框架和架構的關係可以總結爲兩句話:(1)爲了儘早驗證架構設計,或者處於支持產品線開發的目的,可以將關鍵的通用機制甚至整個架構以框架的方式進行實現;(2)業界(及公司內部)可能存在大量可供重用的框架,這些框架或者已經實現了軟件架構所需的重要架構機制,或者爲未來系統的某個子系統提供了可擴展的半成品,所以最終的軟件架構可以藉助這些框架構造。

框架模式有哪些?

MVC、MTV、MVP、CBD、ORM等等;

框架有哪些?

C++語言的QT、MFC、gtk,Java語言的SSH 、SSI,php語言的 smarty(MVC模式),python語言的django(MTV模式)等等

設計模式有哪些?

工廠模式、適配器模式、策略模式等等

簡而言之:框架是大智慧,用來對軟件設計進行分工;設計模式是小技巧,對具體問題提出解決方案,以提高代碼複用率,降低耦合度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章