前幾天想和一些同來的實習(xí)同事分享一些東西滞磺,分享的主題為“MVC設(shè)計模式”异旧。但是艰赞,在準(zhǔn)備的過程中卻發(fā)現(xiàn)自己理解上一直存在的一個錯誤——MVC根本不是設(shè)計模式佣谐,而是一種架構(gòu)模式!我一開始有點兒懵方妖,不知道大家對這兩個概念是不是很清楚狭魂。今天我想說一下自己的理解。党觅。雌澄。
設(shè)計模式
在面向?qū)ο蟪绦蛟O(shè)計(OOP)過程中,我們經(jīng)常會遇到很多重復(fù)出現(xiàn)的問題杯瞻,總結(jié)解決這些問題的成功經(jīng)驗和最佳實踐便形成了設(shè)計模式(Design Pattern)镐牺。
其核心思想是將可重用的解決方案總結(jié)出來,并分門別類魁莉。從而指導(dǎo)設(shè)計睬涧,減少代碼重復(fù)和優(yōu)化體系結(jié)構(gòu)募胃。
簡而言之,設(shè)計模式就是針對于重復(fù)出現(xiàn)的問題所總結(jié)出的最佳經(jīng)驗畦浓。
架構(gòu)模式
架構(gòu)模式痹束,也叫架構(gòu)風(fēng)格,描述軟件系統(tǒng)里的基本的結(jié)構(gòu)組織或綱要讶请。
架構(gòu)模式是一個很廣的概念祷嘶,基于它可以寫一些框架,比如好多框架都是基于MVC架構(gòu)模式的夺溢,例如Struts抹蚀,JFinal,Spring等企垦。
簡單理解二者的關(guān)系與區(qū)別
設(shè)計模式強調(diào)解決方案,目的是使代碼更加面向?qū)ο笊估础<軜?gòu)模式強調(diào)軟件系統(tǒng)的組織和綱要钞诡。
舉一個簡單地例子:
假如你要蓋房子,架構(gòu)模式就相當(dāng)于你所需要的椽子湃崩、檁子荧降、磚瓦等,還包括圖紙等與房子的形成有關(guān)的圖紙攒读,沒有這些東西我們改不成想要的房子朵诫。但是設(shè)計模式就不一樣了,因為它是別人總結(jié)好的蓋房子的經(jīng)驗薄扁,不用它我們依然可以蓋成房子剪返,只不過是我們的工人多費些力好了。