???????? 最近準(zhǔn)備畢業(yè)設(shè)計(jì)的開(kāi)題報(bào)告,原來(lái)設(shè)想手機(jī)控制端使用J2ME,但是mentor給我思路說(shuō)可以考慮使用OSGI,一番開(kāi)導(dǎo),完全打亂了我原來(lái)的想法,思路當(dāng)然也開(kāi)闊不少,我決定研究一下OSGI的可行性。???????? 先介紹一下OSGI,如很多人一樣,對(duì)OSGI這個(gè)名詞的了解關(guān)注適于Eclipse,常見(jiàn)的解釋“OSGi 聯(lián)盟建立于 1999 年,是一個(gè)非贏利機(jī)構(gòu),旨在建立一個(gè)開(kāi)放的服務(wù)規(guī)范。OSGi 規(guī)范為網(wǎng)絡(luò)服務(wù)定義了一個(gè)標(biāo)準(zhǔn)的、面向組件的計(jì)算環(huán)境,它最初的目的就是為各種嵌入式設(shè)備提供通用的軟件運(yùn)行平臺(tái),屏蔽設(shè)備操作系統(tǒng)與硬件區(qū)別的中間件平臺(tái),通過(guò)這個(gè)平臺(tái),可以對(duì)不同軟件商提供的應(yīng)用(OSGi 中稱(chēng)為 Bundle)進(jìn)行組件的生命周期管理的能力,如應(yīng)用組件可以從運(yùn)行中被安裝、升級(jí)或者移除而不需要中斷設(shè)備的操作,應(yīng)用組件可以動(dòng)態(tài)的發(fā)現(xiàn)和使用其他庫(kù)或者應(yīng)用程序。由于 OSGi 技術(shù)具有服務(wù)組件模塊化、動(dòng)態(tài)加載應(yīng)用等優(yōu)點(diǎn),正被越來(lái)越多的領(lǐng)域關(guān)注,如嵌入設(shè)備制造業(yè)、汽車(chē)制造業(yè)、企業(yè)應(yīng)用等。目前,OSGi 聯(lián)盟發(fā)布的最新的 OSGi 服務(wù)規(guī)范為 4.0。”?????????? 看了OSGI的WhitePaper說(shuō)OSGI應(yīng)用于多種領(lǐng)域,見(jiàn)下圖??????? 我就想在我的Nokia6670手機(jī)里使用OSGI,照理來(lái)講肯定是可以搞定的,因?yàn)閃hitePaper說(shuō)了不少嘛,但是目前對(duì)OSGI的了解僅限于使用Eclipse開(kāi)發(fā)幾個(gè)Bundle的簡(jiǎn)單協(xié)作,自己想想直接把這個(gè)部署到手機(jī)里貌似不太可能,然后又Google的N多資料,終于發(fā)現(xiàn)一個(gè)CLDC設(shè)備上OSGI的實(shí)現(xiàn),來(lái)自ProSyst的mBedded Server CLDC Edition,貌似有個(gè)評(píng)估版可以下載,我發(fā)現(xiàn)可以在我的Nokia機(jī)器上使用OSGI framework的希望了。還有Google到的信息是Knopflerfish的一個(gè)OSGI platform實(shí)現(xiàn)貌似是可以在SonyEricsson P900機(jī)器上跑起來(lái)了的。??????? 郁悶的臺(tái)灣南海的地震把什么海底光纜搞掛了,這幾天國(guó)外網(wǎng)站都上不了,osgi,Knopflerfish,ProSyst都上不去,所以不能獲取進(jìn)一步深入學(xué)習(xí)資料,網(wǎng)頁(yè)都打不開(kāi)非常郁悶啊!????????不知道有沒(méi)有人部署過(guò)這樣的OSGI在手機(jī)里的應(yīng)用,總覺(jué)得這個(gè)OSGI的WhitePaper說(shuō)的都是抽象層面上的,我想學(xué)習(xí)的是怎么樣把這個(gè)用起來(lái)。說(shuō)OSGI規(guī)范化***,但是不知道如何用起來(lái)啊。。。希望有研究OSGI的人和我交流交流。?????? ???????? J2ME + WebService是個(gè)簡(jiǎn)單的架構(gòu),J2ME開(kāi)發(fā)手機(jī)上的Application,WebService提供手機(jī)和Server的信息交互。考慮過(guò)用.NET實(shí)現(xiàn)WebService,J2ME調(diào)用。這個(gè)系統(tǒng)結(jié)構(gòu)相對(duì)容易被更多人了解且容易實(shí)現(xiàn)。???????? 兩種實(shí)現(xiàn),相對(duì)來(lái)說(shuō)更想嘗試OSGI,但是OSGI卻相對(duì)來(lái)說(shuō)陌生一點(diǎn),現(xiàn)在很多關(guān)于OSGI的資料也訪(fǎng)問(wèn)不了,矛盾啊。。。
?????????到公司實(shí)習(xí)近五個(gè)月了,主要從事C++開(kāi)發(fā),困擾于復(fù)雜的專(zhuān)家系統(tǒng)的陳舊代碼,不能說(shuō)代碼寫(xiě)的不好,肯定比我寫(xiě)出來(lái)的C++代碼好,但是卻很難讓人讀懂,邏輯復(fù)雜,而且又缺乏Code的維護(hù),文檔也沒(méi)有,所有系統(tǒng)特性完全由前人口傳聲授,搞得很頭大。。。??????????????????當(dāng)然也學(xué)習(xí)到不少東西,比如如何分析復(fù)雜的代碼,經(jīng)歷種種挫敗打擊之后,我總結(jié)出如下規(guī)律,面對(duì)一個(gè)復(fù)雜的系統(tǒng),你完全不知道它是干什么的,首先從大的角度把握系統(tǒng)的業(yè)務(wù)特性,主要完成后哪些操作,企業(yè)級(jí)別應(yīng)用不外乎數(shù)據(jù)庫(kù)的CRUD,非要區(qū)分出不同之處個(gè)人認(rèn)為就是各種應(yīng)用如何把著簡(jiǎn)單的四種操作弄得更復(fù)雜啦!具體方法無(wú)非轉(zhuǎn)圈再轉(zhuǎn)圈!?????????然后拆解出系統(tǒng)層次架構(gòu)的模型,在紙上畫(huà)出層次實(shí)現(xiàn)框圖有助于快速把握系統(tǒng)的層次模型。?????????分解出層次模型之后的下一步就是關(guān)注BusinessLogic層?xùn)|西,如何系統(tǒng)層析模型不好,例如BL和DAO混雜,首先要做的是想辦法如何重構(gòu)這樣的模型,因?yàn)椴恢貥?gòu)這樣的系統(tǒng)很快你就會(huì)感覺(jué)這個(gè)項(xiàng)目沒(méi)有盡頭了,在痛苦中煎熬啊。在寫(xiě)Code之前,一定要理解BL的東西,Code誰(shuí)都會(huì)寫(xiě),但是要高效完成Coding工作,理解你要寫(xiě)什么是前提,我自己在這個(gè)方面吃虧不少,寫(xiě)出來(lái)Code,自己也不知道是干什么的,項(xiàng)目結(jié)束了,現(xiàn)在強(qiáng)烈鄙視自己了??????????????????重新開(kāi)始BLOG生涯了,原因:鞏固自己學(xué)習(xí)到的知識(shí),并且將自己學(xué)習(xí)的體會(huì)于大家分享,也許我的些許經(jīng)驗(yàn)?zāi)芙o迷茫當(dāng)中的人帶來(lái)幫助,不吝嗇自己的只言片語(yǔ),哪怕是不夠成熟的。另一方面,表達(dá)出自己的理解和思想,或許會(huì)獲得大家不同的評(píng)價(jià),你有一個(gè)思想我有一個(gè)思想,交換,我們就有兩個(gè)思想了!當(dāng)然,自己錯(cuò)誤的理解馬上能得到大家的糾正,這對(duì)自己知識(shí)的構(gòu)建是非常好有幫助的!?????????下一階段學(xué)習(xí)計(jì)劃 Spring,Hibernate,有空也玩玩AJAX?????????
設(shè)計(jì)模式學(xué)習(xí)(一) 工廠(chǎng)模式之簡(jiǎn)單工廠(chǎng)
Creational Pattern:
*creates objects for you rather than having you instantiate objects directly
*gives your program more flexibility in deciding which objects need to be created for a given case
工廠(chǎng)模式有以下三種形態(tài):
● 簡(jiǎn)單工廠(chǎng)(Simple Factory)模式:又稱(chēng)靜態(tài)工廠(chǎng)方法(Static Factory Method)模式
● 工廠(chǎng)方法(Factory Method)模式:又稱(chēng)多態(tài)性工廠(chǎng)(Polymorphic Factory)模式
● 抽象工廠(chǎng)(Abstract Factory)模式:又稱(chēng)工具箱(Kit 或 Toolkit)模式
簡(jiǎn)單工廠(chǎng)模式其實(shí)是普通工廠(chǎng)模式的一個(gè)特例,今天就從這里開(kāi)始吧。
其結(jié)構(gòu)可以簡(jiǎn)單地表示如下:
沒(méi)用Visio畫(huà),大家見(jiàn)諒呀
我們從一個(gè)實(shí)際的例子來(lái)看這個(gè)簡(jiǎn)單工廠(chǎng)模式
假設(shè)一個(gè)農(nóng)場(chǎng),專(zhuān)門(mén)向市場(chǎng)銷(xiāo)售各種水果,假設(shè)只提供良種的水果,蘋(píng)果和葡萄,我們?yōu)樗O(shè)計(jì)一個(gè)抽象類(lèi)Fruit,所有水果都必須實(shí)現(xiàn)這個(gè)接口
FruitFactory類(lèi),水果加工廠(chǎng),根據(jù)需要(不同參數(shù)代表不同的水果需求)給市場(chǎng)供給水果。