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