<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zcx

    Java ClassLoader 實現程序的擴展性

      

    今天在完成一個功能的候,使用了ServiceLocate模式,

    過這個模式,在程序中可以自由的加其他成員實現的功能模

    具體的做法:

     1)定義標準的服接口。

     2)定描述實現接口的xml文件。

     3)程序xml文件,使用Class.newInstance()例化具體的服務對象。

     4)建立一個特定服和特定服務實現對應HashMap象。完成注冊任

     5)主程序中根據具體的服HashMap中取得具體的行服

     

    個方法,可以完成基于Interface開發要求,利于Test和程序的拓展性。

    有新的要求出后,只需要添加xml中的元素和具體的實現類就可以了。

     

    接下來,繼續想。又發現問題

    1xml是和程序一起布的,如果用隨意改了。很明程序會崩

    解決方法:xml放在jar包中,使用getClass().getResourceAsStream(String name)

    自己加載進來。用完全不知道具體的情況。

     

    2)如果把xml放在了jar包中“藏起來”,實際上原來來的動態擴展的特性,

    也就沒有那了。如何解決呢

     

    細細想來,問題關鍵在于,所有的服務實象的建和注冊都是在

    主控程序中通xml來完成的。如果可以把個注冊和例化的程從主控程序

    中分離出來,通過每個服務實象自注冊來完成,那算是真正的可拓展的。

    如果需要完成新的功能,只需要把新的服務對Class布,重新運行主控程序就會實現的功能。(看起來就和Eclipse

    真是一個不的想法,但是怎做呢?

     

    看看Eclipse如何做的。

    http://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html

     

     

    首先要有一個定的plugin deploy這樣主程序才知道從哪里加

    要有一個plugin.xml文件描述plugin.著文件中有屬性:class="foo.bar.Plugin">

    看上去和我原來做的方式一啊。但是它是如何把個目下的plugin都加的呢?

    我沒有看Eclipse的源,不知道他是怎寫的)

     

    再想想,其主要要解決的問題是不通主框架程序注冊服務實現

    應該由服程序自己注冊上來。按照個思路,我想有兩解決方案。

    1)服接口添加registerService 方法。

       * jarMETATINFO文件中定義類名。

       * 從特定的目jar/class文件。

       * URLClassLoader.newInstance()

       * 后把ServiceLoader參數出入 service.registerSevice()

       * service象完成自己的注冊。

    2)服添加static端在例化的候自完成注冊。

       * 之前和上一個方法一

       * SeviceLoader實現為單態的模式。提供靜的注冊方法。

       * servie象中實現如下的代段完成自注冊。

       static

                  {

                    ServiceLoader.registerService(new service());

                  }

     

     

    這樣看來總算OK了吧。

    posted on 2005-01-11 18:00 zcx 閱讀(659) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
     
    主站蜘蛛池模板: 亚洲午夜久久久久久尤物| 亚洲伦乱亚洲h视频| 亚洲精品人成电影网| 最近免费中文在线视频| 亚洲视频一区二区三区| 色影音免费色资源| 91在线亚洲综合在线| 热99re久久免费视精品频软件| 日韩国产欧美亚洲v片 | 中文字幕版免费电影网站| 亚洲精品无码午夜福利中文字幕| 中文字幕乱理片免费完整的| 亚洲区小说区图片区QVOD| 99视频免费播放| 亚洲av永久无码精品三区在线4| 成在线人永久免费视频播放| 国产亚洲精品仙踪林在线播放| 久久亚洲av无码精品浪潮| 久草免费福利视频| 亚洲卡一卡2卡三卡4麻豆| 国产成人综合久久精品免费| 国产激情久久久久影院老熟女免费| 亚洲AV无码乱码国产麻豆| 69堂人成无码免费视频果冻传媒| 亚洲s码欧洲m码吹潮| 2022中文字字幕久亚洲| 久久午夜伦鲁片免费无码| 亚洲综合无码一区二区痴汉| 亚洲精品456播放| 最近中文字幕大全免费视频| 亚洲人成色777777老人头| 中文字幕精品亚洲无线码二区| 久久A级毛片免费观看| 在线观看亚洲免费视频| 99人中文字幕亚洲区| 日本媚薬痉挛在线观看免费| 国产免费无码一区二区| 亚洲男人的天堂网站| 国产亚洲精久久久久久无码| 成年女人男人免费视频播放| 国产线视频精品免费观看视频|