国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

設(shè)計(jì)模式在移動智能系統(tǒng)中的應(yīng)用研究

2012-11-17 05:27何偉文
中國新技術(shù)新產(chǎn)品 2012年20期
關(guān)鍵詞:日程設(shè)計(jì)模式實(shí)例

何偉文

(廣州科技職業(yè)技術(shù)學(xué)院電子信息系,廣東廣州 510540)

設(shè)計(jì)可重用的面向?qū)ο蟮能浖潜容^困難的。沒有經(jīng)驗(yàn)的開發(fā)人員常常在選擇中猶豫不決,導(dǎo)致他們采用了非對象技術(shù)。設(shè)計(jì)模式的出現(xiàn)使得重用成功的設(shè)計(jì)和架構(gòu)更為容易。設(shè)計(jì)模式能夠幫助設(shè)計(jì)人員選擇那些可重用的設(shè)計(jì)。通過對類、對象交互及其深層次意圖的詳細(xì)說明,設(shè)計(jì)模式甚至能提高現(xiàn)有系統(tǒng)的可維護(hù)性和文檔質(zhì)量。簡言之,設(shè)計(jì)模式能幫助更快的作出正確的設(shè)計(jì),它同樣可以在移動智能系統(tǒng)中加以應(yīng)用。

1 設(shè)計(jì)模式

1.1 簡介

1995 年,由著名的“四人組”GOF(Gang of Four)合著的《設(shè)計(jì)模式——可復(fù)用面向?qū)ο筌浖幕A(chǔ)》列舉了軟件開發(fā)中的23種經(jīng)典設(shè)計(jì)模式。時至今日,對整個軟件開發(fā)行業(yè)影響深遠(yuǎn)。在軟件開發(fā)中,經(jīng)過無數(shù)開發(fā)人員驗(yàn)證、而且可以解決在特定環(huán)境下、重復(fù)出現(xiàn)、特定問題的解決方案就是設(shè)計(jì)模式。使用設(shè)計(jì)模式是為了可重用代碼,而且模式是經(jīng)過驗(yàn)證的代碼模版,可以達(dá)到代碼更容易讓人理解、也保證了代碼的高可靠性。設(shè)計(jì)模式是軟件行業(yè)中革命性的成果,是無數(shù)開發(fā)前輩智慧的結(jié)晶,這些模式不僅是經(jīng)驗(yàn)的積累也是簡潔高效的解決方案,它覆蓋了軟件開發(fā)中具有典型的、有代表性的問題,而且這些模式同樣可以應(yīng)用于移動智能系統(tǒng)的開發(fā)。

1.2 分類

設(shè)計(jì)模式根據(jù)模式的目的可分為3大類:(1)創(chuàng)建型模式(2)結(jié)構(gòu)性模式(3)行為性模式

每一大類又有若干子類,下面結(jié)合實(shí)例重點(diǎn)闡述--抽象工廠模式 (Abstract Factory)在移動應(yīng)用系統(tǒng)中的應(yīng)用與改進(jìn)。

2 抽象工廠模式(Abstract Factory)

2.1 基本概念

每個模式都是針對一定問題的解決方案。抽象工廠模式面對的問題是多產(chǎn)品等級結(jié)構(gòu)的系統(tǒng)設(shè)計(jì)。它包括兩個重要的概念:產(chǎn)品族和產(chǎn)品等級。

圖1 多產(chǎn)品等級結(jié)構(gòu)

產(chǎn)品族:是指位于不同產(chǎn)品等級結(jié)構(gòu)中,功能相關(guān)聯(lián)的產(chǎn)品組成的家族。比如AMD的CPU和ADM芯片的主板,組成一個家族。Intel的CPU和Intel芯片的主板,又組成一個家族。而這兩個家族都來自于兩個產(chǎn)品等級:CPU,主板。一個等級結(jié)構(gòu)是由相同的結(jié)構(gòu)的產(chǎn)品組成,示意圖如圖1:

從上圖可以看出,抽象工廠模式的每個工廠創(chuàng)造出來的都是一族產(chǎn)品,而不是一個或者一組。組是可以隨意組合的! 抽象工廠模式是提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體類。

2.2 UML結(jié)構(gòu)圖

我們先看一下抽象工廠模式的UML結(jié)構(gòu)圖:(圖2)

圖2 抽象工廠模式UML圖

ConcreteProduct:包括 ProductA和 ProductB,對兩個抽象產(chǎn)品的具體分類的實(shí)現(xiàn)。AbstractFactory:抽象工廠接口,它里面應(yīng)該包含所有的產(chǎn)品創(chuàng)建的抽象方法。ConcreteFactory:包括ConcreteFactoryA和ConcreteFactoryB,具體的工廠,創(chuàng)建具有特定實(shí)現(xiàn)的產(chǎn)品對象。

2.3 抽象工廠模式在移動智能系統(tǒng)中的實(shí)現(xiàn)

本文以基于Android平臺使用三層結(jié)構(gòu)開發(fā)的一個移動智能應(yīng)用系統(tǒng),在數(shù)據(jù)訪問層使用抽象工廠設(shè)計(jì)模式為例,深入研究對數(shù)據(jù)訪問、業(yè)務(wù)邏輯、用戶接口進(jìn)行分離的技術(shù)。

2.3.1 系統(tǒng)需求

這個系統(tǒng)是一款集日程管理、定位追蹤、防盜于一體的手機(jī)軟件。其中的日程管理功能需求是對添加的日程要存儲在數(shù)據(jù)庫中;退出程序后再重新打開,日程數(shù)據(jù)要從數(shù)據(jù)庫中讀取,然后把數(shù)據(jù)填充到ListView中。日程提醒功能可以啟動一個Activity,彈出對話框并提示當(dāng)前日程的內(nèi)容信息。具體實(shí)現(xiàn)如圖3、4

圖3 日程列表界面

圖4 日程提醒界面

2.3.2 系統(tǒng)架構(gòu)設(shè)計(jì)系統(tǒng)的層次結(jié)構(gòu)圖如圖6

圖5系統(tǒng)的層次結(jié)構(gòu)圖

結(jié)構(gòu)圖的最頂層是表現(xiàn)層,它直接跟用戶打交道,而不直接與數(shù)據(jù)庫進(jìn)行交互。在這里,我們使用了抽象工廠模式,把創(chuàng)建數(shù)據(jù)庫訪問層實(shí)例的過程與業(yè)務(wù)層進(jìn)行了分離,業(yè)務(wù)層只能通過抽象接口的實(shí)現(xiàn)對象進(jìn)行數(shù)據(jù)的操作,使得業(yè)務(wù)層只認(rèn)識數(shù)據(jù)訪問的抽象接口。而該接口的實(shí)現(xiàn)類對象由工廠對象來生成,這樣,層與層之間不依賴于具體的數(shù)據(jù)類型,實(shí)現(xiàn)了層與層之間的解耦[6]。

2.3.3 系統(tǒng)架構(gòu)實(shí)現(xiàn)

下面我們遵循"抽象工廠模式"的設(shè)計(jì)思想,實(shí)現(xiàn)這個移動智能應(yīng)用系統(tǒng)。

2.3.3.1 數(shù)據(jù)庫訪問層DAL

(1)抽象數(shù)據(jù)庫訪問層IDAL的接口模板。該模板聲明了最基本的數(shù)據(jù)庫增、刪、改、查功能,主要代碼如下:

(2)抽象工廠接口編寫。這里只需要用到一個數(shù)據(jù)訪問提供程序createSchedul e-Provider:

(3)、DAL層的實(shí)現(xiàn)

首先定義基本提供程序SQLiteBaseProvider把數(shù)據(jù)訪問提供程序共有的部分抽象出來,然后添加一個類ScheduleProvider,它繼承SQLiteBaseProvider并實(shí)現(xiàn) IDALSchedule,以實(shí)現(xiàn)數(shù)據(jù)訪問中的增、刪、改、查操作。主要代碼如下:

(4)、具體工廠的實(shí)現(xiàn)

當(dāng)封裝好了對數(shù)據(jù)庫進(jìn)行訪問的操作后,通過具體工廠提供ScheduleProvider的實(shí)例,實(shí)現(xiàn)面向接口的編程,也就實(shí)現(xiàn)了業(yè)務(wù)層和數(shù)據(jù)層之間的解耦。主要代碼如下:

2.3.3.2 業(yè)務(wù)邏輯層BLL

業(yè)務(wù)邏輯層的設(shè)計(jì)是通過具體工廠獲得數(shù)據(jù)訪問提供程序的實(shí)例,并賦值給i-DALSchedule接口,從而使得對數(shù)據(jù)的操作都通過這個抽象接口來進(jìn)行,例如:iDALSchedule.selectAll()。主要代碼如下:

2.3.3.3 表現(xiàn)層UI

Schedule類實(shí)現(xiàn)了OnItemClickListener接口,并實(shí)現(xiàn)了對ListView的Item單擊事件的監(jiān)聽。主要代碼如下:

結(jié)語

綜上所述,抽象工廠設(shè)計(jì)模式在移動智能系統(tǒng)開發(fā)中具有以下的優(yōu)點(diǎn):第一,易于交換產(chǎn)品系列,由于具體工廠類,在一個應(yīng)用中只需要在初始化的時候出現(xiàn)一次,這就使得改變一個應(yīng)用的具體工廠變得非常容易。第二,它讓具體的創(chuàng)建實(shí)例與客戶端分離,客戶端是通過它們的抽象接口操縱實(shí)例,產(chǎn)品的具體類名也被具體工廠的實(shí)現(xiàn)分離,不會出現(xiàn)在客戶端代碼中。抽象工廠模式只是我們認(rèn)識設(shè)計(jì)模式的一個開始,我們可以通過更深層次的研究,進(jìn)一步設(shè)計(jì)出更多的設(shè)計(jì)模式,進(jìn)而更好的適應(yīng)軟件設(shè)計(jì)需求與發(fā)展。

[1]Alan Shaioway,James R.Trotr.設(shè)計(jì)模式解析[M];北京:人民郵電出版社,2006.

[2](美)弗里曼(Freeman,E.)等.Oreily Taiwan公司譯head first設(shè)計(jì)模式[M];北京:中國電力出版社,2007-9-1.

[3]劉振安,董蘭芳,劉燕君.面向?qū)ο蠹夹g(shù)與UML[M].北京:機(jī)械工業(yè)出版社,2007.

[4]李寧,Android 開發(fā)權(quán)威指南[M],北京:人民郵電出版社,2011-09-01

[5](美)羅杰,Android應(yīng)用開發(fā) (李耀亮譯)[M],北京:人民郵電出版社,2010-09-01

[6]Yong-Hua Cheng,Wen-Kuang Kuo,Szu-Lin Su,An Android system design and implementation for Telematics services,Intelligent Computing and IntelligentSystems(ICIS),2010:206210

猜你喜歡
日程設(shè)計(jì)模式實(shí)例
“1+1”作業(yè)設(shè)計(jì)模式的實(shí)踐探索
三維協(xié)同設(shè)計(jì)模式下的航天項(xiàng)目管理實(shí)踐與展望
皮膚護(hù)理提上日程
交通機(jī)電工程設(shè)計(jì)模式創(chuàng)新探討
完形填空Ⅱ
完形填空Ⅰ
2015年焊接行業(yè)展覽會日程
互動式設(shè)計(jì)模式研究
2014年焊接行業(yè)展覽會日程
天台县| 宁陵县| 沙雅县| 科技| 宕昌县| 柘城县| 和静县| 柘荣县| 乃东县| 黄骅市| 内乡县| 黑水县| 游戏| 桐城市| 益阳市| 扶沟县| 鹿邑县| 柘城县| 浦江县| 舒城县| 林口县| 昌图县| 安新县| 克拉玛依市| 浦江县| 麟游县| 京山县| 清苑县| 紫金县| 廊坊市| 绩溪县| 奇台县| 无锡市| 邵东县| 玛曲县| 农安县| 花垣县| 台江县| 常德市| 商丘市| 阳谷县|