一種基于橋架構(gòu)配合反射動態(tài)技術(shù)的制作方法
【專利摘要】本發(fā)明公開了一種基于橋架構(gòu)配合反射動態(tài)技術(shù),包括以下步驟:步驟1)抽象出抽象類的變化;步驟2)繼承抽象類部分的變化;步驟3)抽象出實現(xiàn)部分的變化;步驟4)繼承實現(xiàn)部分的變化,并根據(jù)具體業(yè)務(wù)實現(xiàn)相應(yīng)的功能;步驟5)在配置文件里增加相關(guān)動態(tài)配置信息以及需要擴展的類影射名字,并將配置信息讀入程序里面;步驟6)引用動態(tài)反射,聲明建立動態(tài)映射。本發(fā)明程序整體架構(gòu)清晰,易擴張;代碼方法閱讀性強,易修改;各個類職能單一,封裝性強;引入反射技術(shù),使得后期維護簡單,可實現(xiàn)組件乃至代碼級別的可插拔;整個方法讓代碼的質(zhì)量和效率上都有提高。
【專利說明】一種基于橋架構(gòu)配合反射動態(tài)技術(shù)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種實現(xiàn)代碼解耦的技術(shù),具體涉及的是一種基于橋架構(gòu)配合反射動態(tài)技術(shù)。
【背景技術(shù)】
[0002]橋架構(gòu)模式
橋接模式的意圖就是將變化的因素進行抽象,然后具體的對象通過組合或者屬性注入的形式來引用變化的因素,而這個依賴關(guān)系只是依賴的是因素的抽象,這個時候,不會因為我們改變具體因素的實現(xiàn),而修改用戶程序中的復(fù)雜對象。這樣就滿足了設(shè)計模式的要求,將抽象部分與現(xiàn)實部分分離,使它們都可以獨立的變化.簡而言之就是實現(xiàn)多維度的變化。
反射(Reflection)是.NET中的重要機制,通過反射可以在運行時獲得.NET中每一個類型(包括類、結(jié)構(gòu)、委托、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等,還可以獲得每個成員的名稱、限定符和參數(shù)等。有了反射,即可對每一個類型了如指掌。如果獲得了構(gòu)造函數(shù)的信息,即可直接創(chuàng)建對象,即使這個對象的類型在編譯時還不知道。
[0003]NET可執(zhí)行應(yīng)用程序結(jié)構(gòu)
程序代碼在編譯后生成可執(zhí)行的應(yīng)用,我們首先要了解這種可執(zhí)行應(yīng)用程序的結(jié)構(gòu)。應(yīng)用程序結(jié)構(gòu)分為應(yīng)用程序域一程序集一模塊一類型一成員幾個層次,公共語言運行庫加載器管理應(yīng)用程序域。這種管理包括將每個程序集加載到相應(yīng)的應(yīng)用程序域以及控制每個程序集中類型層次結(jié)構(gòu)的內(nèi)存布局。
[0004]程序集包含模塊,而模塊包含類型,類型又包含成員,反射則提供了封裝程序集、模塊和類型的對象。我們可以使用反射動態(tài)地創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象或從現(xiàn)有對象中獲取類型,然后調(diào)用類型的方法或訪問其字段和屬性。
[0005]反射通常具有以下用途:
(I)使用程序集類定義和加載程序集,加載在程序集清單中列出模塊,以及從此程序集中查找類型并創(chuàng)建該類型的實例。
[0006](2)使用模塊了解包含模塊的程序集以及模塊中的類等,還可以獲取在模塊上定義的所有全局方法或其他特定的非全局方法。
[0007](3)使用程序集信息了解構(gòu)造函數(shù)的名稱、參數(shù)、訪問修飾符(如pulic或private)和實現(xiàn)詳細信息(如 abstract 或 virtual)等。使用 Type 的 GetConstructors 或GetConstructor方法來調(diào)用特定的構(gòu)造函數(shù)。
[0008](4)使用MethodInfo 了解方法的名稱、返回類型、參數(shù)、訪問修飾符(如pulic或private)和實現(xiàn)詳細信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法來調(diào)用特定的方法。
[0009](5)使用FiedInfo 了解字段的名稱、訪問修飾符(如public或private)和實現(xiàn)詳細信息(如static)等,并獲取或設(shè)置字段值。[0010](6)使用EventInfo 了解事件的名稱、事件處理程序數(shù)據(jù)類型、自定義屬性、聲明類型和反射類型等,添加或移除事件處理程序。
[0011](7)使用Propertylnfo 了解屬性的名稱、數(shù)據(jù)類型、聲明類型、反射類型和只讀或可寫狀態(tài)等,獲取或設(shè)置屬性值。
[0012](8)使用ParameterInfo 了解參數(shù)的名稱、數(shù)據(jù)類型、是輸入?yún)?shù)還是輸出參數(shù),以及參數(shù)在方法簽名中的位置等。
[0013]System.Reflection.Emit命名空間的類提供了一種特殊形式的反射,可以在運行時構(gòu)造類型。
[0014]反射也可用于創(chuàng)建稱為類型瀏覽器的應(yīng)用程序,使用戶能夠選擇類型,然后查看有關(guān)選定類型的信息。
[0015]此夕卜,Jscript等語言編譯器使用反射來構(gòu)造符號表。System.Runtime.Serialization命名空間中的類使用反射來訪問數(shù)據(jù)并確定要永久保存的字段,System.Runtime.Remoting命名空間中的類通過序列化來間接地使用反射。
【發(fā)明內(nèi)容】
[0016]本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在的以上問題,提供一種基于橋架構(gòu)配合反射動態(tài)技術(shù),方便于程序動態(tài)擴展靈活配置,可實現(xiàn)組件乃至代碼級的靈活擴展變更。
[0017]為實現(xiàn)上述技術(shù)目的,達到上述技術(shù)效果,本發(fā)明通過以下技術(shù)方案實現(xiàn):
一種基于橋架構(gòu)配合反射動態(tài)技術(shù),包括以下步驟:
步驟I)抽象出抽象類的變化,定義所述變化的基類;
步驟2)繼承抽象類部分的變化,針對基礎(chǔ)類變化而實現(xiàn)的具體業(yè)務(wù);
步驟3)抽象出實現(xiàn)部分的變化,并將此變化聲明一個基類;
步驟4)繼承實現(xiàn)部分的變化,并根據(jù)具體業(yè)務(wù)實現(xiàn)相應(yīng)的功能;
步驟5)在配置文件里增加相關(guān)動態(tài)配置信息以及需要擴展的類影射名字,并將配置信息讀入程序里面;
步驟6)引用動態(tài)反射,聲明建立動態(tài)映射,從配置文件讀取值并對此賦值,從配置文件里讀取要放射的類,抽象變化的基類。
[0018]本發(fā)明的有益效果是:
1、程序整體架構(gòu)清晰,易擴張;
2、代碼方法閱讀性強,易修改;
3、各個類職能單一,封裝性強;
4、引入反射技術(shù),使得后期維護簡單,可實現(xiàn)組件乃至代碼級別的可插拔;
5、整個方法讓代碼的質(zhì)量和效率上都有提高。
【專利附圖】
【附圖說明】:
圖1為橋接模式的展示圖。
【具體實施方式】
[0019]下面將結(jié)合實施例,來詳細說明本發(fā)明。[0020]一種基于橋架構(gòu)配合反射動態(tài)技術(shù),包括以下步驟:
步驟I)抽象出抽象類的變化,定義所述變化的基類;
步驟2)繼承抽象類部分的變化,針對基礎(chǔ)類變化而實現(xiàn)的具體業(yè)務(wù);
步驟3)抽象出實現(xiàn)部分的變化,并將此變化聲明一個基類;
步驟4)繼承實現(xiàn)部分的變化,并根據(jù)具體業(yè)務(wù)實現(xiàn)相應(yīng)的功能;
步驟5)在配置文件里增加相關(guān)動態(tài)配置信息以及需要擴展的類影射名字,并將配置信息讀入程序里面;
步驟6)引用動態(tài)反射,聲明建立動態(tài)映射,從配置文件讀取值并對此賦值,從配置文件里讀取要放射的類,抽象變化的基類。
【權(quán)利要求】
1.一種基于橋架構(gòu)配合反射動態(tài)技術(shù),其特征在于,包括以下步驟: 步驟I)抽象出抽象類的變化,定義所述變化的基類; 步驟2)繼承抽象類部分的變化,針對基礎(chǔ)類變化而實現(xiàn)具體的業(yè)務(wù); 步驟3)抽象出實現(xiàn)部分的變化,并將所述實現(xiàn)部分的變化聲明一個基類; 步驟4)繼承實現(xiàn)部分的變化,并根據(jù)具體業(yè)務(wù)實現(xiàn)相應(yīng)的功能; 步驟5)在配置文件里增加相關(guān)動態(tài)配置信息以及需要擴展的類影射名字,并將配置信息讀入程序里面; 步驟6)引用動態(tài)反射,聲明建立動態(tài)映射,從配置文件讀取值和要放射的類,并對所述值賦值。
【文檔編號】G06F9/44GK103823658SQ201210464690
【公開日】2014年5月28日 申請日期:2012年11月19日 優(yōu)先權(quán)日:2012年11月19日
【發(fā)明者】梁俊斌, 董陽, 孫學(xué)磊 申請人:蘇州博遠容天信息科技有限公司