J2EE之巔

           

          OSGi實現動態特性的關鍵模式

          OSGi平臺為我們提供了強大的動態特性,通過分析我們可以發現這些動態特性的實現與很多常用的設計模式相關,了解其中原理直接將這些模式用于我們的應用開發,也可以有效地實現動態特性。
          1 Broker模式:實現服務提供者與服務使用者的分離及解耦。Bundle通過所能提供的服務將自己注冊至Framework,調用者通過Framework查找所需的服務。Bundle的服務注冊是實現服務自動發現的基礎。
           
          2 監聽者模式:這是實現動態特性的關鍵,通過監聽者模式服務的使用者(實現監聽接口)可以獲得所依賴的服務提供者(Bundle)的狀態變化的通知,從而動態處理與服務提供者間的關系以實現動態特性,不僅如此OSGi Framework自身同樣有效的融合了這種通知機制,使得實現監聽者接口的Bundle可以了解Framework的狀態變化。
           
          在我們的應用系統中借鑒OSGi的原理,同樣可以有效地實現動態特性。


          蔡超
          軟件架構師
          軟件架構顧問
          SCEA,SCBCD
          IBM Certified Solution Designer for OOA&D vUML2
          Chaocai2001@yahoo.com.cn

          posted on 2008-10-15 21:40 超越巔峰 閱讀(1903) 評論(4)  編輯  收藏 所屬分類: Design Pattern

          評論

          # re: OSGi實現動態特性的關鍵模式[未登錄] 2008-10-16 09:45 caoer

          OSGi的事件監聽機制與JAVA中常用的監聽器模式有本質的不同,建議bz看一看下面鏈接:http://www.osgi.org/wiki/uploads/Links/whiteboard.pdf。本人參與開發的項目也是基于OSGi框架的,希望以后能夠相互溝通。  回復  更多評論   

          # re: OSGi實現動態特性的關鍵模式 2008-10-16 10:59 蔡超

          @caoer

          多謝了這篇大作本人拜讀過,其中對比了Java AWT實現的監聽模式與OSGi中實現的差別,這種差別是為了滿足OSGi的運行環境.在本人看來其實白板模式的原理就是BLOG中提及的兩個模式組合應用,文中提到了大量Listener,EventSource的問題及Listener生命周期管理的問題, 在白板模式中通過Service Register來管理EventSource及EventSource與Listener的關系,同時Listener的生命周期也會受到OSGi平臺的管理,他在注冊和注銷是都會產生事件.仔細分析不難發現這是Broker和Observer模式的組合應用(Broker便是Service Register),同一模式的實現會有不同,這要根據實際環境(就如文中對比的OSGi和Java AWT的不同實現)

            回復  更多評論   

          # re: OSGi實現動態特性的關鍵模式 2008-10-16 13:58 蔡超

          @caoer
          "白板模式"中的白板其實就是Broker,這個模式實際是分離EventSource和Listener,在他們之間加入一個Broker白板,通過白板來管理Listener,EventSource通過白板來發送Event,從而避免了傳統Observer模式中獨立管理Listener帶來的一些問題。



            回復  更多評論   

          # re: OSGi實現動態特性的關鍵模式 2008-10-20 16:36 zhuxing

          @蔡超
          挺準的^_^
            回復  更多評論   

          導航

          統計

          常用鏈接

          留言簿(12)

          隨筆分類(54)

          隨筆檔案(59)

          文章分類(2)

          文章檔案(1)

          相冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜阳县| 清镇市| 中方县| 阳城县| 孟州市| 民和| 林州市| 竹北市| 新宁县| 甘孜县| 兴安盟| 怀化市| 扎囊县| 卓尼县| 建平县| 长子县| 土默特右旗| 仲巴县| 岳普湖县| 灵武市| 贡嘎县| 绥宁县| 高淳县| 华池县| 斗六市| 青川县| 富裕县| 陕西省| 东宁县| 双江| 蓬莱市| 潼关县| 长宁区| 隆安县| 宁波市| 峡江县| 长寿区| 泾阳县| 毕节市| 那曲县| 广河县|