




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MVC設(shè)計(jì)形式在通用報(bào)表系統(tǒng)中的應(yīng)用摘要通用報(bào)表系統(tǒng)設(shè)計(jì)運(yùn)用模型-視圖-控制器設(shè)計(jì)形式構(gòu)造客戶端報(bào)表視圖與報(bào)表數(shù)據(jù)間的協(xié)作模型,將報(bào)表框架與報(bào)表數(shù)據(jù)別離,用戶能根據(jù)處理需要自定義報(bào)表式樣和指定數(shù)據(jù)源,系統(tǒng)自動(dòng)生成所需要的報(bào)表。本文給出它們各自在報(bào)表系統(tǒng)設(shè)計(jì)中的應(yīng)用范例。關(guān)鍵字報(bào)表系統(tǒng);設(shè)計(jì)形式;數(shù)據(jù)異構(gòu);多窗口支持;模型-視圖-控制器1引言傳統(tǒng)報(bào)表系統(tǒng),通常是針對(duì)某個(gè)商業(yè)領(lǐng)域使用,其使用的報(bào)表格式往往在設(shè)計(jì)時(shí)由設(shè)計(jì)人員已經(jīng)定做成模版的形式存儲(chǔ)在模版庫(kù)中,用戶使用時(shí)直接從模版庫(kù)讀取,處理方式也僅限于該領(lǐng)域內(nèi);雖然在一定程度上該解決方法帶來(lái)了一定管理上的廉價(jià),可對(duì)于現(xiàn)代企業(yè)用戶來(lái)說(shuō),報(bào)表格式單一已
2、經(jīng)局限了報(bào)表只能作為記賬簿來(lái)使用,使得報(bào)表的可塑性差,后期維護(hù)困難,難以適應(yīng)消費(fèi)過(guò)程的多樣性和變化性,無(wú)法滿足大型企業(yè)不斷擴(kuò)大的適應(yīng)性、智能型的要求,特別是當(dāng)業(yè)務(wù)領(lǐng)域變化時(shí),原有的報(bào)表系統(tǒng)往往很難支持新業(yè)務(wù)數(shù)據(jù)的管理分析,要進(jìn)展大量的重新開(kāi)發(fā)工作。在本通用報(bào)表的設(shè)計(jì)中,將報(bào)表框架與報(bào)表數(shù)據(jù)別分開(kāi),用戶即能根據(jù)自己的需要隨意繪制表格,又能按照業(yè)務(wù)要求自主的選擇數(shù)據(jù)來(lái)源。一旦框架和數(shù)據(jù)來(lái)源定義完畢,系統(tǒng)可以自動(dòng)生成所需要的報(bào)表。為了經(jīng)濟(jì)的到達(dá)方便使用的目的,必須吸收先進(jìn)的軟件開(kāi)發(fā)思想,采用優(yōu)秀的軟件開(kāi)發(fā)方法以進(jìn)步軟件質(zhì)量和軟件的重用性,其中進(jìn)步軟件的重用性是減少開(kāi)發(fā)本錢的關(guān)鍵。本文主要介紹V設(shè)計(jì)形
3、式在通用報(bào)表系統(tǒng)開(kāi)發(fā)中的應(yīng)用,給出了詳細(xì)問(wèn)題相應(yīng)的解決方法,進(jìn)步了軟件的通用性和擴(kuò)展性。2設(shè)計(jì)形式設(shè)計(jì)形式是設(shè)計(jì)面向?qū)ο筌浖倪^(guò)程中記錄的知識(shí)和經(jīng)歷,用一系列類構(gòu)造和對(duì)象來(lái)詳細(xì)描繪其含義。設(shè)計(jì)形式的目的就是復(fù)用這些面向?qū)ο笤O(shè)計(jì)的解決方案,根據(jù)詳細(xì)應(yīng)用完成詳細(xì)的設(shè)計(jì)以及便于這些抽象解決方案的積累和交流。與不使用設(shè)計(jì)形式的軟件系統(tǒng)相比,一個(gè)大量使用設(shè)計(jì)形式的軟件系統(tǒng)的對(duì)象建模更加合理,對(duì)象間的耦合度更小,效率、可靠性、可晉級(jí)性、并發(fā)性、平行性和分布性更高,更能獲得高層次的設(shè)計(jì)復(fù)用和代碼復(fù)用。設(shè)計(jì)形式概念最先來(lái)自于城市建筑專家對(duì)建筑形式的定義“每一個(gè)形式描繪了在人們周圍不斷反復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題
4、的解決方案的核心。這樣,你就能一次又一次的使用該方案而不必做重復(fù)勞動(dòng)。這種建筑上的形式思想在面向?qū)ο蟮脑O(shè)計(jì)形式中同樣適用,形式的核心就在于提供了相關(guān)問(wèn)題的解決方案。設(shè)計(jì)形式確定了所包含的類和實(shí)例,它們的角色、協(xié)作方式以及職責(zé)分配。它通過(guò)刻畫部件靜態(tài)和動(dòng)態(tài)構(gòu)造及其之間的合作關(guān)系,成功地應(yīng)用于解決商業(yè)數(shù)據(jù)處理、電子通信、圖形用戶界面、數(shù)據(jù)庫(kù)、分布式通信軟件等軟件構(gòu)造中的問(wèn)題。一般而言,設(shè)計(jì)形式有4個(gè)要素:形式名稱:用來(lái)描繪問(wèn)題、解決方案和效果。問(wèn)題:描繪可以在什么時(shí)候使用設(shè)計(jì)形式。解決方案:描繪了設(shè)計(jì)形式的組成局部,它們之間的互相關(guān)系及各自的職責(zé)和協(xié)作方式。效果:描繪了形式應(yīng)用的效果及使用形式應(yīng)該
5、權(quán)衡的問(wèn)題。一個(gè)設(shè)計(jì)形式命名抽象確定了一個(gè)通用設(shè)計(jì)構(gòu)造的主要方面,這些設(shè)計(jì)構(gòu)造能用來(lái)構(gòu)造可重用的面向?qū)ο笤O(shè)計(jì)。我們?cè)趫?bào)表系統(tǒng)中主要使用了模型-視圖-控制器設(shè)計(jì)形式(V)、觀察者bserver、適配器形式Adapter以及橋接(Bridge)這幾種設(shè)計(jì)形式。3設(shè)計(jì)形式的應(yīng)用3.1模型-視圖-控制器V報(bào)表系統(tǒng)中為了方便用戶對(duì)數(shù)據(jù)的分析和使用,同一業(yè)務(wù)數(shù)據(jù)常常需要多種視圖呈現(xiàn),即一個(gè)表格對(duì)象和一個(gè)柱狀圖對(duì)象可使用不同的表示形式描繪同一個(gè)應(yīng)用數(shù)據(jù)對(duì)象的消息。表格對(duì)象和柱狀對(duì)象并不知道對(duì)方的存在,這樣使用戶可以根據(jù)需要單獨(dú)復(fù)用表格或柱狀圖;當(dāng)用戶改變比表格中的信息時(shí),柱狀圖能立即反映這一變化,這一行為意
6、味著表格和柱狀圖都依賴于數(shù)據(jù)對(duì)象。早期的圖形化程序設(shè)計(jì)常常圍繞著事件驅(qū)動(dòng)的用戶界面來(lái)組織,這樣的直接后果就是數(shù)據(jù)處理、程序功能與顯示代碼完全糾結(jié)在一起。大型的圖形化程序中一個(gè)數(shù)據(jù)通常對(duì)應(yīng)多種表示與處理方式,把特定界面綁定到應(yīng)用程序上嚴(yán)重降低了程序的靈敏性,使得一個(gè)很小的改動(dòng)也牽扯到大量的代碼,增加了程序開(kāi)發(fā)與維護(hù)的工作量。20世紀(jì)70年代,V形式在salltalk80的GUI設(shè)計(jì)中被提出,并且描繪了不同局部的對(duì)象之間的通信方式,使它們不必卷入彼此的數(shù)據(jù)模型開(kāi)發(fā)方法中,使程序構(gòu)造變得明晰而靈敏。V形式包括三個(gè)局部:模型del、視圖Vie和控制器ntrller,分別對(duì)應(yīng)于內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入輸
7、出控制局部。模型是與問(wèn)題相關(guān)數(shù)據(jù)的邏輯抽象,代表對(duì)象的內(nèi)在屬性,是整個(gè)模型的核心。它采用面向?qū)ο蟮姆椒ǎ瑢?wèn)題領(lǐng)域中的對(duì)象抽象為應(yīng)用程序?qū)ο?,在這些抽象的對(duì)象中封裝了對(duì)象的屬性和這些對(duì)象所隱含的邏輯。視圖是模型的外在表現(xiàn),一個(gè)模型可以對(duì)應(yīng)一個(gè)或者多個(gè)視圖,如圖形用戶界面視圖、命令行視圖、API視圖;或按使用者分類:新用戶視圖、純熟用戶視圖等。視圖具有與外界交互的功能,是應(yīng)用系統(tǒng)與外界的接口:一方面它為外界提供輸入手段,并觸發(fā)應(yīng)用邏輯運(yùn)行;另一方面,它又將邏輯運(yùn)行的結(jié)果以某種形式顯示給外界??刂破魇悄P团c視圖的聯(lián)絡(luò)紐帶,控制器提取通過(guò)視圖傳輸進(jìn)來(lái)的外部信息,并將用戶與Vie的交互轉(zhuǎn)換為基于應(yīng)用程
8、序行為的標(biāo)準(zhǔn)業(yè)務(wù)事件,再將標(biāo)準(zhǔn)業(yè)務(wù)事件解析為del應(yīng)執(zhí)行的動(dòng)作包括激活業(yè)務(wù)邏輯或改變del的狀態(tài)。同時(shí),模型的更新與修改也將通過(guò)控制器來(lái)通知視圖,從而保持各個(gè)視圖與模型的一致性。實(shí)現(xiàn)V形式時(shí)面對(duì)的主要問(wèn)題是del和Vie的關(guān)系,在設(shè)計(jì)形式中的bserver形式很好的描繪了如何建立這種關(guān)系。這一形式中關(guān)鍵的對(duì)象是目的subjet和觀察者(bserver)。一個(gè)目的可以有多個(gè)依賴它的觀察者;一旦目的發(fā)生變化,所有依賴它的觀察者都得到通知,并做出響應(yīng),即每個(gè)觀察者都將查詢目的進(jìn)展更新,以保證和目的的狀態(tài)同步。這種形式允許我們獨(dú)立的改變目的和觀察者;用戶可以單獨(dú)復(fù)用目的對(duì)象而無(wú)需同時(shí)復(fù)用其觀察者,反之
9、亦然。這種形式可以在不改動(dòng)目的和其他觀察者的前提下增加觀察者。在報(bào)表系統(tǒng)中,目的即為業(yè)務(wù)數(shù)據(jù),觀察者定義為在用戶界面上的顯示視圖。顯示視圖是由其相關(guān)的業(yè)務(wù)數(shù)據(jù)決定,當(dāng)業(yè)務(wù)數(shù)據(jù)發(fā)生變化時(shí),視圖也將發(fā)生變化。同一業(yè)務(wù)數(shù)據(jù)會(huì)有多種顯示視圖;一樣類型的視圖也可以表達(dá)不同的業(yè)務(wù)數(shù)據(jù)。而且可以根據(jù)需要在任意時(shí)刻增加和刪除顯示視圖,大大進(jìn)步了報(bào)表系統(tǒng)的通用性。當(dāng)報(bào)表系統(tǒng)業(yè)務(wù)數(shù)據(jù)變化時(shí),它要通知依賴它的所有視圖發(fā)生相應(yīng)的變化,這樣就需要在業(yè)務(wù)數(shù)據(jù)對(duì)象里記錄依賴它的視圖,或是增加一個(gè)關(guān)聯(lián)查找機(jī)制。這兩種方法在數(shù)據(jù)和視圖間依賴關(guān)系比擬少時(shí)可以高效的解決問(wèn)題,但當(dāng)它們之間的關(guān)系特別復(fù)雜時(shí),我們就需要一個(gè)專門的對(duì)象來(lái)
10、維護(hù)這些關(guān)系,這里我們稱之為更改管理器hangeanager,它的目的是盡量減少視圖反映數(shù)據(jù)變化所需的工作量。例如,假如一個(gè)操作涉及到對(duì)幾個(gè)互相依賴的目的進(jìn)展改動(dòng),就必須保證僅在所有的目的都已經(jīng)更改完畢后,才一次性的通知它們的觀察者,而不是每個(gè)目的都通知觀察者。另外,觀察者并不是對(duì)所有的事件都感興趣,可以擴(kuò)展目的的注冊(cè)接口,讓個(gè)觀察者注冊(cè)為僅對(duì)特定事件感興趣,以進(jìn)步更新的效率。當(dāng)一個(gè)事件發(fā)生時(shí),目的僅通知那些已注冊(cè)為對(duì)該事件感興趣的觀察者。bserver形式在報(bào)表系統(tǒng)中的層次構(gòu)造如圖1所示,其中DataEntry為業(yè)務(wù)數(shù)據(jù)抽象,它的詳細(xì)實(shí)現(xiàn)由nreteDataEntry來(lái)完成;UserVie是
11、顯示視圖的抽象,詳細(xì)使用的視圖由nreteUserVie實(shí)現(xiàn);更改管理器hangeanage的實(shí)現(xiàn)有兩種:Siplehangeanage和DAGhangeanage,它們分別管理單一目的的目的觀察者關(guān)系和多目的互相關(guān)聯(lián)的目的觀察者關(guān)系。圖1報(bào)表系統(tǒng)中bserver形式層次構(gòu)造圖其中業(yè)務(wù)數(shù)據(jù)的類定義如下:lassDataEntrypubli:virtualDataEntry();virtualvidAttah(UserVie*pVie);/增加視圖virtualvidDetah(UserVie*pVie);/刪除視圖virtualvidNtify(UserVie*pSender);/通知prte
12、ted:DataEntry();private:ListUserVie*UserVieList;/記錄視圖顯示視圖的定義為:lassUserViepubli:DataEntrygetDataEntry();/*獲取業(yè)務(wù)數(shù)據(jù)實(shí)體的狀態(tài),相當(dāng)于形式中的GetState()和SetState()*/virtualvidNtify(UserVie*pVie);virtualvidnDra(UserVie*pVie);/設(shè)計(jì)為虛函數(shù)以供重載prteted:ListDataEntry*DataEntryList;/記錄業(yè)務(wù)數(shù)據(jù)實(shí)體在這里簡(jiǎn)要說(shuō)明一下Ntify的實(shí)現(xiàn):vidNtify:DataEntry(U
13、serVie*pSender)ASSERT(pSender=NULL|*UserVieList.IsEpty();/判斷視圖列表是否為空PSITINps=GetFirstViePsitin();hile(ps!=NULL)UserVie*pVie=GetNextVie(ps);ASSERT_VAILD(pVie);if(pVie!=pUserVie)pVie-Ntity();3.2適配器形式Adapter在許多大型企業(yè)及某些行業(yè)的局域網(wǎng)或廣域網(wǎng)內(nèi),由于歷史和技術(shù)開(kāi)展的原因存在著多種數(shù)據(jù)庫(kù)同時(shí)在運(yùn)行的情況,比方某大型企業(yè)、某地區(qū)的電力單位或電信公司等,可能正同時(shí)在使用著多種數(shù)據(jù)庫(kù)rale,DB2
14、,SQLServer,Sybase或Infrix等。在這樣多的數(shù)據(jù)庫(kù)并存的環(huán)境下,要求能任意訪問(wèn)到這些數(shù)據(jù)庫(kù),實(shí)現(xiàn)多種數(shù)據(jù)庫(kù)間的數(shù)據(jù)轉(zhuǎn)化、資源共享、數(shù)據(jù)一致性和完好性成為系統(tǒng)開(kāi)發(fā)和應(yīng)用中一個(gè)尤為突出的問(wèn)題。構(gòu)建通用的數(shù)據(jù)庫(kù)訪問(wèn)主要是實(shí)現(xiàn)對(duì)數(shù)據(jù)源訪問(wèn)的底層操作的封裝,而僅僅給出數(shù)據(jù)讀取對(duì)象或數(shù)據(jù)集對(duì)象等供商業(yè)邏輯層調(diào)用,因此采用Adapter形式,根據(jù)不同的數(shù)據(jù)提供者產(chǎn)生相應(yīng)的數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)命令等數(shù)據(jù)庫(kù)對(duì)象來(lái)實(shí)現(xiàn)對(duì)低層操作的封裝,通過(guò)暴露執(zhí)行數(shù)據(jù)集對(duì)象等上層操作以供其他邏輯層調(diào)用。對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)根底是基于構(gòu)造化查詢語(yǔ)言SQL,在詳細(xì)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)中,是通過(guò)SQL語(yǔ)句來(lái)實(shí)現(xiàn)的。采用這種設(shè)計(jì)形式
15、對(duì)數(shù)據(jù)庫(kù)進(jìn)展訪問(wèn)的方法是一種通用訪問(wèn)技術(shù),即應(yīng)用程序可用一樣的源代碼訪問(wèn)不同類型的數(shù)據(jù)庫(kù),如Sybase,rale等。Adapter形式是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)借口。Adapter形式使得本來(lái)由于接口不兼容而不能一起工作的那些類可以一起工作,它又稱為“rapper包裝器。當(dāng)要使用一個(gè)已經(jīng)存在的類,而它的接口不符合需要,或是創(chuàng)立一個(gè)可以復(fù)用的類,該類可以與其它不相關(guān)的類或不可預(yù)見(jiàn)的類協(xié)同工作。Adapter形式的根本構(gòu)造圖如圖2所示:圖2Adapter形式的根本構(gòu)造圖Adapter形式應(yīng)用在報(bào)表系統(tǒng)中,形式中Target即為應(yīng)用程序中數(shù)據(jù)訪問(wèn)類,它負(fù)責(zé)進(jìn)展數(shù)據(jù)庫(kù)的連接、進(jìn)展數(shù)據(jù)庫(kù)
16、操作等等;形式中的Adaptee為實(shí)際存在的各種數(shù)據(jù)庫(kù);在進(jìn)展系統(tǒng)實(shí)現(xiàn)時(shí)的主要工作是對(duì)不同的數(shù)據(jù)庫(kù)編寫相應(yīng)的數(shù)據(jù)源驅(qū)動(dòng)程序,即編寫Adapter。應(yīng)用程序?qū)?shù)據(jù)庫(kù)的訪問(wèn)主要是選擇一個(gè)數(shù)據(jù)源并連接它、提交SQL語(yǔ)句以及檢索結(jié)果,除此以外還可以確定并調(diào)整驅(qū)動(dòng)程序的性能、閱讀數(shù)據(jù)庫(kù)編目等等;應(yīng)用程序中數(shù)據(jù)訪問(wèn)類通過(guò)數(shù)據(jù)源驅(qū)動(dòng)程序訪問(wèn)不同數(shù)據(jù)資源中的數(shù)據(jù),每個(gè)不同的數(shù)據(jù)資源類型由一個(gè)數(shù)據(jù)源驅(qū)動(dòng)程序支持。數(shù)據(jù)源驅(qū)動(dòng)程序是處理數(shù)據(jù)訪問(wèn)類對(duì)象的函數(shù)調(diào)用,提交SQL懇求到一個(gè)指定的數(shù)據(jù)元,并把結(jié)果返回到應(yīng)用程序;假如有必要,數(shù)據(jù)源驅(qū)動(dòng)程序修改一個(gè)應(yīng)用程序懇求,以使懇求與相關(guān)的DBS支持的語(yǔ)法一致。每個(gè)驅(qū)動(dòng)程序
17、都針對(duì)特定的DBS;例如,一個(gè)rale驅(qū)動(dòng)程序不能直接訪問(wèn)InfrixDBS中的數(shù)據(jù)。數(shù)據(jù)源驅(qū)動(dòng)程序展示根底DBS的才能,他們不能實(shí)現(xiàn)DBS不支持的才能。它進(jìn)展數(shù)據(jù)源連接、檢查應(yīng)用程序中的函數(shù)錯(cuò)誤、初始化事務(wù)和把SQL語(yǔ)句提交給執(zhí)行的數(shù)據(jù)源。數(shù)據(jù)源驅(qū)動(dòng)程序必須把應(yīng)用程序的SQL修改成針對(duì)相應(yīng)DBS的SQL,并把數(shù)據(jù)發(fā)送到數(shù)據(jù)源,或從數(shù)據(jù)源檢索數(shù)據(jù),包括根據(jù)應(yīng)用程序的指定來(lái)轉(zhuǎn)換數(shù)據(jù)類型,最后斷開(kāi)與數(shù)據(jù)源的連接。當(dāng)數(shù)據(jù)源驅(qū)動(dòng)程序的數(shù)量增加,并且處理的事物逐漸復(fù)雜時(shí),僅僅用應(yīng)用程序的數(shù)據(jù)訪問(wèn)類來(lái)進(jìn)展驅(qū)動(dòng)程序的管理已大大增加了系統(tǒng)的負(fù)擔(dān),我們可以提供一個(gè)驅(qū)動(dòng)程序管理器來(lái)管理數(shù)據(jù)源驅(qū)動(dòng)程序。此時(shí)應(yīng)用程序
18、是被連接到驅(qū)動(dòng)程序管理器,而不是驅(qū)動(dòng)程序。它使用應(yīng)用程序傳遞的連接句柄搜索目的驅(qū)動(dòng)程序中的函數(shù)地址,并通過(guò)地址調(diào)用那個(gè)函數(shù)。驅(qū)動(dòng)程序管理器多數(shù)只是把函數(shù)調(diào)用從應(yīng)用程序傳送給正確的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序管理器最終的作用是加載和卸載數(shù)據(jù)源驅(qū)動(dòng)程序,應(yīng)用程序只加載和卸載驅(qū)動(dòng)程序管理器。當(dāng)它要使用一個(gè)特殊的驅(qū)動(dòng)程序時(shí),它調(diào)用驅(qū)動(dòng)程序管理器中的連接函數(shù),并指明一個(gè)特殊數(shù)據(jù)源或驅(qū)動(dòng)程序名。使用該名稱,驅(qū)動(dòng)程序管理器為驅(qū)動(dòng)程序文件名查詢數(shù)據(jù)源信息,比方SQLSRVR.DLL,然后它加載驅(qū)動(dòng)程序,保存驅(qū)動(dòng)程序中每個(gè)函數(shù)的地址,并調(diào)用驅(qū)動(dòng)程序中的連接函數(shù),然后初始化它自己,并連接到數(shù)據(jù)源。當(dāng)應(yīng)用程序使用驅(qū)動(dòng)程序做完
19、工作后,它調(diào)用驅(qū)動(dòng)程序管理器中的SQLDisnnet。驅(qū)動(dòng)程序管理其中調(diào)用驅(qū)動(dòng)程序中的此函數(shù),斷開(kāi)與數(shù)據(jù)源的連接。然而,驅(qū)動(dòng)程序管理器重新連接它時(shí),把驅(qū)動(dòng)程序保存在內(nèi)存中。只有當(dāng)應(yīng)用程序釋放驅(qū)動(dòng)程序使用的連接,或者使用不同的驅(qū)動(dòng)程序連接,并且沒(méi)有器它連接使用此驅(qū)動(dòng)程序時(shí),它才卸載驅(qū)動(dòng)程序。3.3橋接形式(Bridge)Bridge設(shè)計(jì)形式時(shí)對(duì)象構(gòu)造形式的一種,它將抽象局部與實(shí)現(xiàn)局部別離,使它們可以獨(dú)立實(shí)現(xiàn)。當(dāng)在一個(gè)程序中,某一個(gè)抽象可以由很多實(shí)現(xiàn)方法的時(shí)候,我們通常是使用面向?qū)ο笾欣^承的方法來(lái)實(shí)現(xiàn)并協(xié)調(diào)這些方法。但是這種繼承機(jī)制有以下缺乏的地方,而使用Bridge設(shè)計(jì)形式都能使這些缺乏得到很好
20、地解決。繼承機(jī)制使客戶代碼在實(shí)現(xiàn)功能的時(shí)候涉及到特定的相應(yīng)平臺(tái),與平臺(tái)產(chǎn)生相關(guān)性,對(duì)代碼的移植產(chǎn)生很大的困難,但是Bridge設(shè)計(jì)形式將抽象和實(shí)現(xiàn)局部放在獨(dú)立的不同層次的類構(gòu)造中,將抽象中與系統(tǒng)平臺(tái)相關(guān)局部別分開(kāi)來(lái),同時(shí)也降低了實(shí)現(xiàn)局部對(duì)編譯的依賴性,當(dāng)改變一個(gè)實(shí)現(xiàn)類時(shí),并不需要重新編譯抽象局部和它的客戶程序。我們的報(bào)表系統(tǒng)是一個(gè)通用系統(tǒng),我們希望這個(gè)系統(tǒng)可以支持多窗口系統(tǒng)。雖然不同的窗口系統(tǒng)有不兼容的程序設(shè)計(jì)接口,但是所有的窗口系統(tǒng)總的來(lái)說(shuō)還是在做同一件事情,我們可以對(duì)不同的窗口系統(tǒng)做一個(gè)統(tǒng)一的抽象,在對(duì)各窗口系統(tǒng)的實(shí)現(xiàn)做一些調(diào)整,使之符合公共接口。我們首先定義一個(gè)inds抽象類,它封裝了需
21、要各窗口系統(tǒng)都要做的一些事情,并且能跨越不同的窗口系統(tǒng)實(shí)現(xiàn)。在這個(gè)抽象類提供了支持大多數(shù)窗口系統(tǒng)的方便接口,其詳細(xì)的子類支持用戶用到的不同種類的窗口,而對(duì)不同窗口系統(tǒng)的實(shí)現(xiàn)那么由indIp類層次隱藏。indIp是一個(gè)封裝了窗口系統(tǒng)相關(guān)代碼的對(duì)象的抽象類,為了使報(bào)表系統(tǒng)運(yùn)行于一個(gè)特定的窗口系統(tǒng),我們用該子系統(tǒng)的一個(gè)indIp子類設(shè)置ind對(duì)象。這樣,防止了對(duì)窗口系統(tǒng)的直接依賴,這樣可以讓inds類保持相對(duì)較小而且較穩(wěn)定,同時(shí)還能方便的擴(kuò)展實(shí)現(xiàn)層次構(gòu)造以支持新的窗口系統(tǒng)。ind和indIp層次構(gòu)造之間的關(guān)系有下列圖所示,其中inds_X即為可以擴(kuò)展的窗口系統(tǒng)接口。圖3ind和indIp層次構(gòu)造4結(jié)語(yǔ)應(yīng)用設(shè)計(jì)形式可以使看似復(fù)雜的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)簡(jiǎn)單化,設(shè)計(jì)出來(lái)的系統(tǒng)具有靈敏、強(qiáng)健和可復(fù)用性強(qiáng)等特點(diǎn),而且還可以方便開(kāi)發(fā)人員的溝通和交流,保證軟件開(kāi)發(fā)文檔的準(zhǔn)確性和易讀性,便于代碼開(kāi)發(fā)工作。在報(bào)表系統(tǒng)中引入設(shè)計(jì)形式,不僅加深了對(duì)面向?qū)ο笏枷氲恼J(rèn)識(shí),而且使得系統(tǒng)的設(shè)計(jì)間接明了,進(jìn)步了軟件系統(tǒng)的可維護(hù)性和伸縮性。文章就設(shè)計(jì)形式在通用報(bào)表系統(tǒng)中的使用進(jìn)展了一定的研究和討論。主要就通用報(bào)表系統(tǒng)中幾個(gè)關(guān)鍵的通用問(wèn)題給出了相關(guān)的設(shè)計(jì)形式解決方案。該通用報(bào)表的設(shè)計(jì)為解決集團(tuán)性企業(yè)、政府統(tǒng)計(jì)的報(bào)表匯總分析、預(yù)算編制、合并報(bào)表
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度教育機(jī)構(gòu)講師團(tuán)隊(duì)合作協(xié)議
- 公司文員勞動(dòng)協(xié)議
- 全球環(huán)境治理項(xiàng)目資金捐贈(zèng)協(xié)議
- 中國(guó)地理讀后感
- 《數(shù)學(xué)競(jìng)賽題庫(kù)設(shè)計(jì)與復(fù)習(xí)教學(xué)教案》
- 大宗商品貿(mào)易管理流程手冊(cè)
- 委托貸款借款合同
- 農(nóng)產(chǎn)品質(zhì)量安全追溯手冊(cè)
- 互聯(lián)網(wǎng)軟件開(kāi)發(fā)合同協(xié)議
- 綠化工程承包合同協(xié)議
- 位相差和光程差
- 高質(zhì)量SCI論文入門必備從選題到發(fā)表全套課件
- 前列腺癌的診斷與治療課件
- 產(chǎn)品開(kāi)發(fā)的變更流程
- 氣管鏡科室講課ppt課件(PPT 69頁(yè))
- 蝴蝶豌豆花(課堂PPT)
- 無(wú)創(chuàng)呼吸機(jī)的應(yīng)用(飛利浦偉康V60)課件
- 口腔修復(fù)學(xué)-第七章-牙列缺失的全口義齒修復(fù)
- Y-Y2系列電機(jī)繞組標(biāo)準(zhǔn)數(shù)據(jù)匯總
- 對(duì)于二氧化碳傳感器的現(xiàn)狀及發(fā)展趨勢(shì)的淺分析
- 麥語(yǔ)言函數(shù)手冊(cè)參考模板
評(píng)論
0/150
提交評(píng)論