設(shè)計模式
工廠模式、適配器模式、策略模式等等
框架
一個框架可以包含多個設(shè)計模式??蚣芫褪且唤M相互協(xié)作的類,對于特定的一類軟件,框架構(gòu)成了一種可重用的設(shè)計。框架則是設(shè)計和代碼的一個混合體。
軟件框架是項目軟件開發(fā)過程中提取特定領(lǐng)域軟件的共性部分形成的體系結(jié)構(gòu),不同領(lǐng)域的軟件項目有著不同的框架類型??蚣艿淖饔迷谟冢河捎谔崛×颂囟I(lǐng)域軟件的共性部分,因此在此領(lǐng)域內(nèi)新項目的開發(fā)過程中代碼不需要從頭編寫,只需要在框架的基礎(chǔ)上進行一些開發(fā)和調(diào)整便可滿足要求;
架構(gòu)
軟件體系機構(gòu)。體系結(jié)構(gòu)確定了系統(tǒng)整體結(jié)構(gòu)、層次劃分,不同部分之間的協(xié)作等設(shè)計考慮??蚣鼙燃軜?gòu)更具體。更偏重于技術(shù)涉嫌。確定框架后,軟件體系結(jié)構(gòu)也隨之確定,而對于同一軟件體系結(jié)構(gòu)(比如Web開發(fā)中的MVC),可以通過多種框架來實現(xiàn)。
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計典范,用一種業(yè)務邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務邏輯。MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中。
| 項目 | 設(shè)計模式 | 框架 | 架構(gòu) |
|---|---|---|---|
| 應用領(lǐng)域 | - | - | - |
| 復用性 | - | - | - |
框架和設(shè)計模式的區(qū)別
有很多程序員往往把框架模式和設(shè)計模式混淆,認為MVC是一種設(shè)計模式。實際上它們完全是不同的概念。 框架、設(shè)計模式這兩個概念總?cè)菀妆换煜?,其實它們之間還是有區(qū)別的。
框架通常是代碼重用,而設(shè)計模式是設(shè)計重用,架構(gòu)則介于兩者之間,部分代碼重用,部分設(shè)計重用,有時分析也可重用。
在軟件生產(chǎn)中有三種級別的重用:
- 內(nèi)部重用,即在同一應用中能公共使用的抽象塊;
- 代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領(lǐng)域都能使用;
- 應用框架的重用,即為專用領(lǐng)域提供通用的或現(xiàn)成的基礎(chǔ)結(jié)構(gòu),以獲得最高級別的重用性。
框架與設(shè)計模式雖然相似,但卻有著根本的不同。
- 設(shè)計模式是對在某種環(huán)境中反復出現(xiàn)的問題以及解決該問題的方案的描述,它比框架更抽象;
- 框架可以用代碼表示,也能直接執(zhí)行或復用,而對模式而言只有實例才能用代碼表示;
設(shè)計模式是比框架更小的元素,一個框架中往往含有一個或多個設(shè)計模式,框架總是針對某一特定應用領(lǐng)域,但同一模式卻可適用于各種應用??梢哉f,框架是軟件,而設(shè)計模式是軟件的知識。
參考資源