[發明專利]可調節對象結構、系統框架及對既有系統轉化的方法無效
| 申請號: | 201310314973.8 | 申請日: | 2013-07-25 |
| 公開(公告)號: | CN103399742A | 公開(公告)日: | 2013-11-20 |
| 發明(設計)人: | 馬駿;陶先平;呂建 | 申請(專利權)人: | 南京大學 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 江蘇圣典律師事務所 32237 | 代理人: | 賀翔 |
| 地址: | 210008 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 調節 對象 結構 系統 框架 既有 轉化 方法 | ||
1.一種具有可調節能力的對象結構,該對象結構包括數據及與之對應的一系列操作,其特征在于,所述一系列操作中的每個操作還對應一個操作鏈,而每個操作鏈由一系列的操作變體所構成;每個操作變體提供了對應各操作的具體實現;執行某個操作時,系統首先查找操作所對應的操作鏈,然后依次執行操作鏈的各個操作變體。
2.一種采用權利要求1所述對象結構的系統整體框架模型,其特征在于包括:
Adaptable類:Adaptable類維護一個static?屬性chain_templates,用于保存該類每個方法所對應的操作鏈模板;針對chain_templates中的所有操作鏈,Adaptable類分別實現接口I_Adaptable所提供的兩個方法:insert_OV()和remove_OV?(),從而在chain_templates中的某一個操作鏈插入或刪除指定操作變體,此外,Adaptable還維護一個實例屬性ov_chains,該屬性用于記錄每個Adaptable實例對象的方法所對應的操作鏈;
OperationChain類:實現I_OperationChain接口并維護一個名為obj的屬性(),用于記錄可調節對象;OperationChain類還進一步提供了兩個額外的操作setValue()與getValue(),用于獲取或修改obj所指定的可調節對象的某個屬性的值;
一個應用系統對應一個AppMgr類實例,用于統一維護該應用運行時刻所有的可調節對象,而register_AdaptObject()?與unregister_AdaptObject()?方法是提供給可調節對象在創建以及消亡時刻向AppMgr注冊或注銷的:一個AppMgr實例還負責維護對應應用系統所會用到所有操作變體,insertOV()與removeOV()方法則是用于向指定的類的指定操作所對應的操作鏈插入或刪除特定的操作變體。
3.一種將既有對象式應用系統自動透明轉換為可調節對象系統的方法,該方法對既有對象式系統程序或類進行一次離線的自動轉換,得到與之相對應的一系列可調節類;轉換后得到符合對象結構的對象式系統,在保持原有系統的功能,同時具備了可調節的能力;其特征在于,利用加載時刻代碼植入技術對既有對象式系統程序的各個類進行轉換,具體過程為:給定類C,轉換步驟包括:
1)Adaptable類屬性/方法植入:
將接口I_Adaptable添加到類C所實現的接口,
將Adaptable類屬性和方法植入到C類之中;
初始化static屬性chain_templates:針對C類每一個方法m,為其創建一個操作鏈實例,并將其插入散列表chain_templates中;
2)方法轉換:針對C類每一個方法m,完成以下轉換:
a)將m改名為m.name+“_$Original$”,其中m.name為方法m的名稱;
b)重新創建方法m,該方法同原先的m方法具有相同的方法名、參數列表以及返回類型,新建立的方法m的方法體則直接調用對應的操作鏈的execute()方法,并返回執行結果;
3)構造方法的調整:
a)針對類C的每一個構造方法,在構造方法第一條指令執行之前添加對ov_chains屬性的初始化,即針對其每一個非static方法從chain_templates復制對應操作鏈并插入ov_chains之中;
b)在構造方法所有指令執行結束之后,添加向AppMgr注冊,即調用register_AdaptObject()方法)的代碼。
4.一種權利要求3所述的可調節對象系統的運行及修改方法,其特征在于,可調節對象式系統運行時,開發和部署新的操作變體,并刪除或替換現有的操作變體,以實現對系統行為的增量式開發和動態行為調整,其中:
1)可調節對象系統的啟動具體運行步驟如下:
1.1)創建AppMgr實例;
1.2)執行指定的Main()方法,運行系統;
2)?系統在運行過程中會不斷創建/注銷一系列的可調節對象,具體過程為:
2.1)每個可調節對象的創建通過對應構造函數完成,?構造函數過程需要完成如下步驟:
如果可調節類是首次被加載,則首先執行初始化static屬性chain_templates的static語句塊:針對C類每一個方法m,為其創建一個操作鏈實例,并將其插入散列表chain_templates中;
初始化對象實例的ov_chains屬性,即針對其每一個非static方法m從chain_templates復制對應操作鏈并插入ov_chains之中;
向AppMgr實例注冊:完成實例創建之后,新創建的可調節對象實例需要自動向AppMgr實例(調用register_AdaptObject()方法)注冊自己;
2.2)當可調節對象不在被引用,而需要被系統垃圾收集器清理之后,AppMgr實例則會自動通過自身的unregister_AdaptObject()方法注銷對應可調節對象;
3)?當在系統運行過程中需要向某個可調節類C的方法m所對應操作鏈插入/刪除指定操作變體時候,將按照如下步驟執行:
31)從chain_templates中查詢m對應的操作鏈,記為chain_temp;向chain_temp中插入/刪除指定的操作變體;
3.2)AppMgr查詢本地所有C類的實例,并從每個實例的ov_chains查詢獲取方法m所對應的操作鏈,記為chain_instance:然后向chain_instance插入/刪除指定的操作變體;
4)當在系統運行過程中執行某個可調節對象的方法m的時候,將按照如下步驟執行:
4.1)如果所調用方法m為static方法,則從chain_templates中查詢m對應的操作鏈,記為chain;如果所調用方法m不是static方法,則從對象ov_chains中查詢m對應的操作鏈chain;
4.2)對于獲取得到的操作鏈chain,如果chain中的操作變體數量為0,則直接運行m方法的原始實現,即m_$Original方法;否則,則順序依次執行chain中的各個操作變體。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310314973.8/1.html,轉載請聲明來源鉆瓜專利網。





