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