闖蕩在移動(dòng)互聯(lián)網(wǎng)的世界中
接上一篇的例子,為了更具體一點(diǎn),我們考慮這樣的case,假設(shè)房地產(chǎn)開發(fā)商construction A采納了規(guī)劃公司design A的方案,打算建造公寓類型的房子CityApartment然后客戶A買了一套房子
用ooa方式分析這個(gè)case,我抽象這幾個(gè)實(shí)體:規(guī)劃公司,圖紙類型,開發(fā)商,房子,買房人然后描述這幾件事情:開發(fā)商選擇設(shè)計(jì)圖紙,蓋樓然后銷售;買房人根據(jù)圖紙買房并使用房子
下面是我用java語言來簡單描述它:
design A 公司
開發(fā)商construction A
客戶 costumer A
然后我們把他們分別做成bundleBundle A : design A其manifest中這樣描述
Bundle B : construction A其manifest中這樣描述
Bundle C : customer C其manifest中這樣描述
這樣,裝入到framework后,framework就會(huì)把BundlB和C與BundleA關(guān)聯(lián)起來,正好描述開發(fā)商A選擇design A的圖紙,客戶A也不得不選擇design A的圖紙啦可是,單從這里,我們看不出來,開發(fā)商和客戶拿同一份圖紙干什么。那我們得必須在BundleB和C的實(shí)現(xiàn)里面寫點(diǎn)東西來說明。
這里給出開發(fā)商construction.a.Construction的偽代碼:
而客戶的代碼可以如下:
這樣,我們就很清楚的看出,Design A為Construction A和Customer A提供了共同的Apartment定義,才使得他們有交易的可能。于此同時(shí),Construction A和Customer A之間的耦合是非常松的,因?yàn)椋绻辛硗庖粋€(gè)開發(fā)商onstruction B加入進(jìn)來也構(gòu)造了Apartment的對象,Customer就可以通過改變選擇條件,輕易的獲得B的房子,而客戶本身不關(guān)心房子是A還是B蓋的,這個(gè)是典型的面向?qū)ο蟮亩鄳B(tài)應(yīng)用。
總的說來,Bundle在framework的幫助下,使得其他bundle使用其類型定義成為可能。service就是在這些共享的類型定義基礎(chǔ)上產(chǎn)生的具體對象,而使用這些service對象的bundle,必然也是對應(yīng)共享類型的使用者。這種類型共享,在osgi里面叫做"class space". framework運(yùn)行時(shí)通過關(guān)聯(lián)bundle之間的類型定義,可以構(gòu)成一個(gè)或多個(gè)"class space",而某個(gè)bundle在framework里面,只能處在一個(gè)"class space"里面,不能同時(shí)出現(xiàn)在多個(gè)"class space"中。怎么理解這個(gè)話呢?請看下一篇,外星人入侵了。
posted on 2007-07-21 22:28 勤勞的蜜蜂 閱讀(1730) 評論(1) 編輯 收藏
OSGi最好的開發(fā)平臺非JXADF莫屬,詳細(xì)參見:http://osgi.jxtech.net 回復(fù) 更多評論
Powered by: BlogJava Copyright © 勤勞的蜜蜂