国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種插件式的計算機程序設(shè)計架構(gòu)的制作方法

      文檔序號:6428769閱讀:274來源:國知局
      專利名稱:一種插件式的計算機程序設(shè)計架構(gòu)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種插件式的計算機程序設(shè)計架構(gòu),尤其是可以將軟件在不同生命周期所產(chǎn)生的新功能,不需要重新編譯程序,只需通過預留的接口既可以使用新的功能。
      背景技術(shù)
      如今,計算機程序繁復多樣,但是基本上所有的軟件生命周期中,都會隨著時間推移,用戶需求發(fā)生不斷的變化,特別的,當用戶需求開發(fā)者新增功能或者改變功能時,開發(fā)者發(fā)現(xiàn)原有的軟件架構(gòu)已經(jīng)無法勝任新的任務需求時,開發(fā)者需要重新設(shè)計這個程序的架構(gòu)。
      但是實際問題是,即使用了一個開發(fā)周期,完成了需求提出的任務后,區(qū)不能保證用戶需求的再次變更或新增,需求蔓延的可能性依然存在。因此,急需要一種插件式的架構(gòu),來應對此種情況?,F(xiàn)有的插件技術(shù),首先是腳本式。使用某種語言把插件的程序邏輯寫成腳本代碼。而這種語言可以是Python,或是其他現(xiàn)存的已經(jīng)經(jīng)過用戶長時間考驗的腳本語言。甚至,你可以自行設(shè)計一種腳本語言來配合你程序的特殊需要。當然,用當今最流行的XML是再合適不過了。這種形式的缺點在于,稍有點編程知識的用戶就可以自行修改你的腳本,因為這種情況所造成的后果是不可預知的,對軟件本身使用非常不安全。其次是聚合式。顧名思義,就是把插件功能直接寫成EXE。主程序除了完成自己的職責外,還負責調(diào)度這些“插件”。但是,這中模式使插件與插件之間,主程序與插件之間的信息交流困難了許多。所以也是存在一定的缺陷。

      發(fā)明內(nèi)容
      為了克服現(xiàn)有的軟件插件設(shè)計框架的主程序與插件之間的信息交流復雜性,以及使用安全性問題,本發(fā)明提供了一種插件式的程序設(shè)計架構(gòu),本發(fā)明所述的架構(gòu)中,插件功能以動態(tài)庫函數(shù)的形式存在。主程序通過接口獲得插件DLL中的函數(shù)簽名,然后在合適的地方調(diào)用它們。通過接口技術(shù),我們的插件需要做的只是實現(xiàn)程序定義的接口。主程序不需要知道插件怎樣實現(xiàn)預定的功能,它只需要通過接口訪問插件,并提供主程序相關(guān)對象的接口。這樣一來,主程序與各插件之間的信息交流就變得異常簡單。并且,插件對于主程序來說是完全透明的。該架構(gòu)不僅能降低主程序與插件之間信息交流的復雜度,還能保障插件在使用過程中的穩(wěn)定性,不會對主程序本身帶來任何安全性的影響。從而大大提升了該框架的實用性和穩(wěn)定性,為應對需求蔓延所帶來的程序功能變化提供了基礎(chǔ)。本發(fā)明對于解決這些技術(shù)問題,所采用的技術(shù)方案是首先,進行接口的設(shè)計。我們的程序編輯器會向插件開放正在使用的業(yè)務對象。程序啟動后,就枚舉每一個插件并把它連接到主程序,同時傳遞主程序中業(yè)務對象到接口。插件可以通過這個接口來請求主程序的業(yè)務對象或訪問主程序功能。根據(jù)上面的需求,我們首先需要一個主程序接口 IApplicationObject。其次,進行業(yè)務對象接口的設(shè)計。這個接口是連接主程序中的業(yè)務對象和插件的一個紐帶,為插件提供業(yè)務對象的操作方法和屬性。接口名稱=IBizObject。這個業(yè)務對象接口根據(jù)不同的業(yè)務場景可以靈活的為對象定義方法和屬性,所以沒有一個統(tǒng)一的標準和內(nèi)容,只需符合一般類方法的規(guī)則既可。再次,根據(jù)插件在其生命周期里的行為,設(shè)計插件的接口 IPlugin。此接口定義了插件生命周期中各個方法,主程序會首先調(diào)用ConnectO方法,并傳遞IApplicationObject給插件。插件在這個過程中做一些初始化工作。然后,插件的OnLoadO方法被調(diào)用。在這之后,當主程序接收到調(diào)用插件的信號時(鍵盤、鼠標響應)就會調(diào)用插件的RunO方法來啟動這個插件。程序結(jié)束時,調(diào)用其OnDestoryO方法。這 樣,插件的生命才宣告結(jié)束。然后,為了方便管理和識別插件,還要為插件定義一個屬性類PluginInfoAttributeo可以保存它的名稱、版本及作者等信息,通過這個類修飾插件,并讓它實現(xiàn)IPlugin接口。最后,將插件式的程序設(shè)計架構(gòu)引用到一個計算機軟件程序中,讓主程序調(diào)通過這個架構(gòu),調(diào)用編寫好的插件即可。


      圖I是插件式架構(gòu)的示意圖 圖2是本發(fā)明的類結(jié)構(gòu)圖 圖3是本發(fā)明的工作流程圖 圖4是本發(fā)明實施例圖之一 圖5是本發(fā)明實施例圖之二 圖6是本發(fā)明實施例圖之三 圖7是本發(fā)明實施例圖之四 圖8是本發(fā)明在使用過程中的文件夾結(jié)構(gòu)圖
      具體實施例方式 通過圖2所示,我們先建立這個插件式架構(gòu),根據(jù)圖2中所示的類結(jié)構(gòu)圖,建立各個類的類文件。其中包括IPlugin、IApplicationObject、PluginInfoAttribute、MyPluginl0在基本接口和類方法搭建完畢后,本實施例是一個文本輸入的實例,主程序所要操作的業(yè)務對象為一個文檔對象,所以,針對IBizObject接口,我們作如下定義
      public interface IDocumentObject {
      //這些屬性是RichTextBox控件的相應的屬性映射 string SelectionText { get ; set ; }
      Color SelectionColor { get ; set ; }
      Font SelectionFont { get ; set ; } int SelectionStart { get ; set ; }int SelectionLength { get ; set ; } string SelectionRTF { get ; set ; } bool HasChanges { get ; } void Select ( int start , int length ); void AppendText( string str ); void SaveFile ( string fiIeName ); void SaveFile ();
      void OpenFile( string fiIeName ); void CloseFile ();
      }
      在這里,IBizObject被重新命名為IDocumentObject,里面提供了對文檔進行操作的
      常用方法?!と缓螅帉懖寮δ?,該插件的功能是向業(yè)務對象(文檔)插入用于自定義的文字,通過讓插件方法集成IPlugin接口,獲取可以跟主程序交互的方法和屬性,然后為插件編寫具體的邏輯代碼,最后封裝好,存放于圖8所示的插件文件夾下,等待主程序調(diào)用。最后,在主程序中,通過代碼,調(diào)用存放于插件文件夾下的插件,如圖4所示。插件啟動后,如圖5所示。我們針對業(yè)務對象“新文件-0”,為其添加文字“ 1234”并單擊插件中的確定按鈕后,得到如圖6所示的效果,可見,我們的插件通過接口,獲悉操作的業(yè)務對象為“新文件-0”,并且將操作結(jié)果,作用于該文檔中。然后,我們通過新建文件功能,為程序添加一個新的業(yè)務對象“新文件-1”,還是調(diào)用插件,為該文檔添加文字“2222”,如圖7所示,同樣操作順利完成。
      權(quán)利要求
      1.一種插件式的計算機軟件設(shè)計架構(gòu),在軟件功能需求發(fā)生較大改變時,可以靈活的對程序功能進行修改,而不需要重新設(shè)計程序架構(gòu),其特征是通過定義接口 IPlugin、接口 IApplicationObject、類 PluginInfoAttribute 以及接口 IBizObject 四個部分,完成一個插件式的計算機軟件架構(gòu)。
      2.根據(jù)權(quán)利要求I所述的一種插件式的計算機軟件設(shè)計架構(gòu),其特征是IPlugin接口根據(jù)插件在其生命周期里的行為,設(shè)計插件的接口 IPlugin,此接口定義了插件生命周期中各個方法,主程序會首先調(diào)用ConnectO方法,并傳遞IApplicationObject給插件,插件在這個過程中做一些初始化工作,然后,插件的OnLoadO方法被調(diào)用,在這之后,當主程序接收到調(diào)用插件的信號時(鍵盤、鼠標響應)就會調(diào)用插件的RunO方法來啟動這個插件,程序結(jié)束時,調(diào)用其OnDestoryO方法,這樣,插件的生命才宣告結(jié)束。
      3.根據(jù)權(quán)利要求I所述的一種插件式的計算機軟件設(shè)計架構(gòu),其特征是通過定義IApplicationObject接口,我們的程序編輯器會向插件開放正在使用的業(yè)務對象,程序啟動后,就枚舉每一個插件并把它連接到主程序,同時傳遞主程序中業(yè)務對象到接口,插件可以通過這個接口來請求主程序的業(yè)務對象或訪問主程序功能。
      4.根據(jù)權(quán)利要求I所述的一種插件式的計算機軟件設(shè)計架構(gòu),其特征是通過定義IBizObject接口,為業(yè)務對象和插件功能提供一個交互的橋梁,這個接口是連接主程序中的業(yè)務對象和插件的一個紐帶,為插件提供業(yè)務對象的操作方法和屬性,這個業(yè)務對象接口根據(jù)不同的業(yè)務場景可以靈活的為對象定義方法和屬性,所以沒有一個統(tǒng)一的標準和內(nèi)容,只需符合一般類方法的規(guī)則既可。
      5.根據(jù)權(quán)利要求I所述的一種插件式的計算機軟件設(shè)計架構(gòu),其特征是為了方便管理和識別插件,還要為插件定義一個屬性類=PluginInfoAttribute,可以保存它的名稱、版本及作者等信息,通過這個類修飾插件,并讓它實現(xiàn)IPlugin接口。
      6.根據(jù)權(quán)利要求I所述的一種插件式的計算機軟件設(shè)計架構(gòu),其特征是通過設(shè)定一個特殊的文件夾,來存放編譯好的插件文件,以供主程序調(diào)用。
      7.根據(jù)權(quán)利要求I所述的一種插件式的計算機軟件設(shè)計架構(gòu),其特征是插件文件以函數(shù)類庫的形式獨立存在于主程序之外,主程序通過接口,與這些插件通信。
      全文摘要
      一種插件式的計算機軟件設(shè)計架構(gòu),采用了接口作為技術(shù)基礎(chǔ),插件功能以動態(tài)庫函數(shù)的形式存在。主程序通過借口獲得插件DLL中的函數(shù)簽名,然后在合適的地方調(diào)用它們。通過接口技術(shù),我們的插件需要做的只是實現(xiàn)程序定義的接口。主程序不需要知道插件怎樣實現(xiàn)預定的功能,它只需要通過接口訪問插件,并提供主程序相關(guān)對象的接口。主程序與各插件之間的信息交流就變得異常簡單。并且,插件對于主程序來說是完全透明的。有效緩解了軟件功能需求的變更對原有軟件架構(gòu)的影響。
      文檔編號G06F9/44GK102890627SQ20111020124
      公開日2013年1月23日 申請日期2011年7月19日 優(yōu)先權(quán)日2011年7月19日
      發(fā)明者范建煒, 范毅龍, 張洪建 申請人:昆明伯爾瑞科技開發(fā)有限公司, 昆明有色冶金設(shè)計研究院股份公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1