|
隨著Visual Studio 2008的發(fā)布,微軟根據(jù)MS-RL協(xié)議向開發(fā)人員提供了.NET Framework的源代碼,包括基礎(chǔ)類庫 (BCL)、 ASP.NET、 WinForms和WPF等代碼。.NET Framework是.NET平臺(tái)的基礎(chǔ)架構(gòu),都開放源代碼,為開發(fā)人員更加深入研究.NET 技術(shù)細(xì)節(jié)提供了極大便利,也為開發(fā)人員如何構(gòu)建一個(gè)優(yōu)秀的軟件開發(fā)框架提供了很好借鑒。
構(gòu)建一個(gè)優(yōu)秀的軟件開發(fā)框架,必然會(huì)使用設(shè)計(jì)模式。.NET Framework作為一個(gè)優(yōu)秀的軟件開發(fā)框架,設(shè)計(jì)模式無處不在,通過分析這些代碼,為我們正確使用設(shè)計(jì)模式提供很大幫助。
首先理解框架和模式的相關(guān)概念。
框架:在特定領(lǐng)域基于體系結(jié)構(gòu)的可重用的設(shè)計(jì)。
模式:解決某一類問題的方法論。Alexander給出的經(jīng)典定義是:每個(gè)模式都描述了一個(gè)在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復(fù)相同的工作。
為什么要用框架。
因?yàn)檐浖到y(tǒng)發(fā)展到今天已經(jīng)很復(fù)雜了,特別是服務(wù)器端軟件,設(shè)計(jì)到的知識(shí),內(nèi)容,問題太多。在某些方面使用別人成熟的框架,就相當(dāng)于讓別人幫你完成一些基礎(chǔ)工作,你只需要集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)。而且框架一般是成熟,穩(wěn)健的,他可以處理系統(tǒng)很多細(xì)節(jié)問題,比如,事物處理,安全性,數(shù)據(jù)流控制等問題。還有框架一般都經(jīng)過很多人使用,所以結(jié)構(gòu)很好,所以擴(kuò)展性也很好,而且它是不斷升級(jí)的,你可以直接享受別人升級(jí)代碼帶來的好處。框架一般處在低層應(yīng)用平臺(tái)(如J2EE、.NET)和高層業(yè)務(wù)邏輯之間的中間層。
為什么要用模式。
因?yàn)槟J绞且环N指導(dǎo),在一個(gè)良好的指導(dǎo)下,有助于你完成任務(wù),有助于你作出一個(gè)優(yōu)良的設(shè)計(jì)方案,達(dá)到事半功倍的效果。而且會(huì)得到解決問題的最佳辦法。
框架與設(shè)計(jì)模式之間的關(guān)系。
設(shè)計(jì)模式和框架在軟件設(shè)計(jì)中是兩個(gè)不同的研究領(lǐng)域。設(shè)計(jì)模式研究的是一個(gè)設(shè)計(jì)問題的解決方法,一個(gè)模式可應(yīng)用于不同的框架和被不同的語言所實(shí)現(xiàn);而框架則是一個(gè)應(yīng)用的體系結(jié)構(gòu),是一種或多種設(shè)計(jì)模式和代碼的混合體雖然它們有所不同,但卻共同致力于使人們的設(shè)計(jì)可以被重用,在思想上存在著統(tǒng)一性的特點(diǎn),因而設(shè)計(jì)模式的思想可以在框架設(shè)計(jì)中進(jìn)行應(yīng)用。
框架和設(shè)計(jì)模式存在著顯著的區(qū)別,主要表現(xiàn)在二者提供的內(nèi)容和致力應(yīng)用的領(lǐng)域:
1. 從應(yīng)用領(lǐng)域上分,框架給出的是整個(gè)應(yīng)用的體系結(jié)構(gòu);而設(shè)計(jì)模式則給出了單一設(shè)計(jì)問題的解決方案,并且這個(gè)方案可在不同的應(yīng)用程序或者框架中進(jìn)行應(yīng)用。
2. 從內(nèi)容上分,設(shè)計(jì)模式僅是一個(gè)單純的設(shè)計(jì),這個(gè)設(shè)計(jì)可被不同語言以不用方式來實(shí)現(xiàn);而框架則是設(shè)計(jì)和代碼的一個(gè)混合體,編程者可以用各種方式對(duì)框架進(jìn)行擴(kuò)展,進(jìn)而形成完整的不同的應(yīng)用。
3. 設(shè)計(jì)模式比框架更容易移植。框架一旦設(shè)計(jì)成形,雖然還沒有構(gòu)成完整的一個(gè)應(yīng)用,但是以其為基礎(chǔ)進(jìn)行應(yīng)用的開發(fā)顯然要受制于框架的實(shí)現(xiàn)環(huán)境;而設(shè)計(jì)模式是與語言無關(guān)的,所以可以在更廣泛的異構(gòu)環(huán)境中進(jìn)行應(yīng)用。
總之,框架是軟件,而設(shè)計(jì)模式是軟件的知識(shí)體,提升框架的設(shè)計(jì)水平。
NET技術(shù):.Net Framework源代碼中的模式——前言,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。