做者:知乎用戶
連接:https://www.zhihu.com/question/31079945/answer/50565711
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
框架、設計模式這兩個概念總容易被混淆,其實它們之間仍是有區別的。框架一般是代碼重用,而設計模式是設計重用,架構則介於二者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即爲專用領域提供通用的或現成的基礎結構,以得到最高級別的重用性。
框架與設計模式雖然類似,但卻有着根本的不一樣。設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架能夠用代碼表示,也能直接執行或複用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中每每含有一個或多個設計模式,框架老是針對某一特定應用領域,但同一模式卻可適用於各類應用。能夠說,框架是軟件,而設計模式是軟件的知識。
框架模式有哪些?
MVC、
MTV、
MVP、
CBD、
ORM等等;
框架有哪些?
C++語言的QT、MFC、gtk,
Java語言的
SSH 、
SSI,
php語言的 smarty(MVC模式),
python語言的django(MTV模式)等等
設計模式有哪些?
工廠模式、適配器模式、策略模式等等
簡而言之:框架是大智慧,用來對軟件設計進行分工;設計模式是小技巧,對具體問題提出解決方案,以提升代碼複用率,下降耦合度。
舉例蓋房子 蓋房子前,開發商都得作調研,咱們這個房地產項目,須要在哪兒選址;適合作什麼項目;項目都有什麼 功能,好比帶不帶花園,公益場所,游泳池這些;還得考察哪些工程隊作過相似項目,項目的實施能力高 ,這樣才能承包給他;再有就是後期的物業管理,都須要哪些部門,設什麼項目。等等等等。 以上這些,我以爲就是系統架構的內容。作這個項目前,要先了解這個項目,而後作一些選擇,什麼選擇 呢?就是我該怎麼作這個項目,採用c/s仍是b/s,是j2ee啊仍是用微軟的體系,服務器用widows仍是unix ,是用spring啊,仍是隻用struts框架,中間件websphere啊仍是weblogic,等等等等。別看這些講起來 空泛,作起來但是不少工做,經驗積累對這個工做也很重要。由於你不僅僅是作單選題,你還要把你的選 擇合起來。若是選擇不當,不一樣的jdk版本,都有可能形成項目沒法運行。 再說框架。房地產項目承包給了工程隊,房地產商說了,我無論你怎麼蓋房子,可是蓋出來的房子,得是 咱們要的樣子,而且質量要可靠。這些事對工程隊來講是小菜一碟,人家成天蓋房子,什麼樣的圖紙蓋出 什麼樣的房子,哪些地方拿什麼樣現成的門和窗戶裝上,熟得不能再熟了。 對了,框架就是用來具體實現某一功能的工具,框架的部件可以重用,並且某一框架通常都只能解決某一 領域的問題。好比strtus是web框架的實現,若是作b/s項目,用他來實現web層真的不錯。可是在c/s項目 裏,他就一點兒用處都沒有了。 最後是模式。工程隊蓋房子確實快,可是蓋房子的圖紙和那些成型的門,窗,樓板框架可不是他們本身整 出來的,他們只管用。有專門的設計人員在作這些事情。這些設計人員成天就想,蓋出一樣的房子,怎麼 樣作才能更省材料,怎麼作才能更省時間,那些現成的門窗,框架,怎麼設計才能實現最大的使用面積,等等。 設計模式是包含在框架裏的,就是用科學的方法來實現一個框架的功能。目的就是最大複用,最大功能實現,最方便調用。