J2EE之巔

           

          OSGi實(shí)現(xiàn)動(dòng)態(tài)特性的關(guān)鍵模式

          OSGi平臺(tái)為我們提供了強(qiáng)大的動(dòng)態(tài)特性,通過(guò)分析我們可以發(fā)現(xiàn)這些動(dòng)態(tài)特性的實(shí)現(xiàn)與很多常用的設(shè)計(jì)模式相關(guān),了解其中原理直接將這些模式用于我們的應(yīng)用開(kāi)發(fā),也可以有效地實(shí)現(xiàn)動(dòng)態(tài)特性。
          1 Broker模式:實(shí)現(xiàn)服務(wù)提供者與服務(wù)使用者的分離及解耦。Bundle通過(guò)所能提供的服務(wù)將自己注冊(cè)至Framework,調(diào)用者通過(guò)Framework查找所需的服務(wù)。Bundle的服務(wù)注冊(cè)是實(shí)現(xiàn)服務(wù)自動(dòng)發(fā)現(xiàn)的基礎(chǔ)。
           
          2 監(jiān)聽(tīng)者模式:這是實(shí)現(xiàn)動(dòng)態(tài)特性的關(guān)鍵,通過(guò)監(jiān)聽(tīng)者模式服務(wù)的使用者(實(shí)現(xiàn)監(jiān)聽(tīng)接口)可以獲得所依賴的服務(wù)提供者(Bundle)的狀態(tài)變化的通知,從而動(dòng)態(tài)處理與服務(wù)提供者間的關(guān)系以實(shí)現(xiàn)動(dòng)態(tài)特性,不僅如此OSGi Framework自身同樣有效的融合了這種通知機(jī)制,使得實(shí)現(xiàn)監(jiān)聽(tīng)者接口的Bundle可以了解Framework的狀態(tài)變化。
           
          在我們的應(yīng)用系統(tǒng)中借鑒OSGi的原理,同樣可以有效地實(shí)現(xiàn)動(dòng)態(tài)特性。


          蔡超
          軟件架構(gòu)師
          軟件架構(gòu)顧問(wèn)
          SCEA,SCBCD
          IBM Certified Solution Designer for OOA&D vUML2
          Chaocai2001@yahoo.com.cn

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

          評(píng)論

          # re: OSGi實(shí)現(xiàn)動(dòng)態(tài)特性的關(guān)鍵模式[未登錄](méi) 2008-10-16 09:45 caoer

          OSGi的事件監(jiān)聽(tīng)機(jī)制與JAVA中常用的監(jiān)聽(tīng)器模式有本質(zhì)的不同,建議bz看一看下面鏈接:http://www.osgi.org/wiki/uploads/Links/whiteboard.pdf。本人參與開(kāi)發(fā)的項(xiàng)目也是基于OSGi框架的,希望以后能夠相互溝通。  回復(fù)  更多評(píng)論   

          # re: OSGi實(shí)現(xiàn)動(dòng)態(tài)特性的關(guān)鍵模式 2008-10-16 10:59 蔡超

          @caoer

          多謝了這篇大作本人拜讀過(guò),其中對(duì)比了Java AWT實(shí)現(xiàn)的監(jiān)聽(tīng)模式與OSGi中實(shí)現(xiàn)的差別,這種差別是為了滿足OSGi的運(yùn)行環(huán)境.在本人看來(lái)其實(shí)白板模式的原理就是BLOG中提及的兩個(gè)模式組合應(yīng)用,文中提到了大量Listener,EventSource的問(wèn)題及Listener生命周期管理的問(wèn)題, 在白板模式中通過(guò)Service Register來(lái)管理EventSource及EventSource與Listener的關(guān)系,同時(shí)Listener的生命周期也會(huì)受到OSGi平臺(tái)的管理,他在注冊(cè)和注銷是都會(huì)產(chǎn)生事件.仔細(xì)分析不難發(fā)現(xiàn)這是Broker和Observer模式的組合應(yīng)用(Broker便是Service Register),同一模式的實(shí)現(xiàn)會(huì)有不同,這要根據(jù)實(shí)際環(huán)境(就如文中對(duì)比的OSGi和Java AWT的不同實(shí)現(xiàn))

            回復(fù)  更多評(píng)論   

          # re: OSGi實(shí)現(xiàn)動(dòng)態(tài)特性的關(guān)鍵模式 2008-10-16 13:58 蔡超

          @caoer
          "白板模式"中的白板其實(shí)就是Broker,這個(gè)模式實(shí)際是分離EventSource和Listener,在他們之間加入一個(gè)Broker白板,通過(guò)白板來(lái)管理Listener,EventSource通過(guò)白板來(lái)發(fā)送Event,從而避免了傳統(tǒng)Observer模式中獨(dú)立管理Listener帶來(lái)的一些問(wèn)題。



            回復(fù)  更多評(píng)論   

          # re: OSGi實(shí)現(xiàn)動(dòng)態(tài)特性的關(guān)鍵模式 2008-10-20 16:36 zhuxing

          @蔡超
          挺準(zhǔn)的^_^
            回復(fù)  更多評(píng)論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(12)

          隨筆分類(54)

          隨筆檔案(59)

          文章分類(2)

          文章檔案(1)

          相冊(cè)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宁国市| 皋兰县| 右玉县| 怀远县| 凤凰县| 宁夏| 顺昌县| 凤台县| 钟山县| 冀州市| 宁国市| 通化县| 辽宁省| 蕉岭县| 忻城县| 东兴市| 都江堰市| 邯郸市| 海淀区| 贺兰县| 健康| 韩城市| 甘孜| 射洪县| 扶沟县| 故城县| 南乐县| 正定县| 崇州市| 平陆县| 富顺县| 台安县| 信阳市| 西贡区| 河南省| 九龙县| 平塘县| 定边县| 且末县| 红桥区| 牙克石市|