第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第1頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第2頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第3頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第4頁
第三章軟件體系結(jié)構(gòu)風(fēng)格與模式_第5頁
已閱讀5頁,還剩152頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、1軟件體系結(jié)構(gòu)的風(fēng)格和模式軟件體系結(jié)構(gòu)的風(fēng)格和模式Software Architecturev Christopher Alexander, The Timeless Way of Building, p247, 1979 每個模式是一個由三部分組成的規(guī)則,表達(dá)了特定環(huán)境、問題每個模式是一個由三部分組成的規(guī)則,表達(dá)了特定環(huán)境、問題和解和解(solution)之間的關(guān)系。之間的關(guān)系。 作為現(xiàn)實世界的一個成分,每個模式表達(dá)了下列三者之間的一作為現(xiàn)實世界的一個成分,每個模式表達(dá)了下列三者之間的一種關(guān)系:特定環(huán)境,在該環(huán)境中反復(fù)出現(xiàn)的力種關(guān)系:特定環(huán)境,在該環(huán)境中反復(fù)出現(xiàn)的力(forces)的系統(tǒng),的

2、系統(tǒng),以及協(xié)調(diào)這些力的某種空間排列。以及協(xié)調(diào)這些力的某種空間排列。 作為語言的一個成分,每個模式是一條指令,展示了這種空間作為語言的一個成分,每個模式是一條指令,展示了這種空間排列如何被一再重復(fù)使用,目的是協(xié)調(diào)同特定環(huán)境相關(guān)的力的排列如何被一再重復(fù)使用,目的是協(xié)調(diào)同特定環(huán)境相關(guān)的力的系統(tǒng)。系統(tǒng)。 簡單地說,模式既是存在于現(xiàn)實世界中的事物,又是告訴我們簡單地說,模式既是存在于現(xiàn)實世界中的事物,又是告訴我們?nèi)绾我约昂螘r創(chuàng)造該事物的規(guī)則。模式既是過程,又是事物;如何以及何時創(chuàng)造該事物的規(guī)則。模式既是過程,又是事物;既是活生生的事物的描述,又是創(chuàng)造該事物的過程的描述。既是活生生的事物的描述,又是創(chuàng)造該

3、事物的過程的描述。軟件體系結(jié)構(gòu)的構(gòu)建模式軟件體系結(jié)構(gòu)的構(gòu)建模式 軟件體系結(jié)構(gòu)的特點之一就是抽象出了很軟件體系結(jié)構(gòu)的特點之一就是抽象出了很多常見的系統(tǒng)構(gòu)建模式,這些模式(或者說結(jié)多常見的系統(tǒng)構(gòu)建模式,這些模式(或者說結(jié)構(gòu)風(fēng)格)是系統(tǒng)設(shè)計人員多年工作經(jīng)驗的總結(jié)構(gòu)風(fēng)格)是系統(tǒng)設(shè)計人員多年工作經(jīng)驗的總結(jié)。v 軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)風(fēng)格(Architectural Style) 一種體系結(jié)構(gòu)風(fēng)格以結(jié)構(gòu)組織模式定義了一個系統(tǒng)家族一種體系結(jié)構(gòu)風(fēng)格以結(jié)構(gòu)組織模式定義了一個系統(tǒng)家族 關(guān)于構(gòu)件和連接件類型的術(shù)語;一組約束對它們組合方式的規(guī)關(guān)于構(gòu)件和連接件類型的術(shù)語;一組約束對它們組合方式的規(guī)定;一個或多個語

4、義模型,規(guī)定了如何從各成分的特性決定系定;一個或多個語義模型,規(guī)定了如何從各成分的特性決定系統(tǒng)整體特性統(tǒng)整體特性 概括地說,一種軟件體系結(jié)構(gòu)風(fēng)格刻劃一個具有共享結(jié)構(gòu)和語概括地說,一種軟件體系結(jié)構(gòu)風(fēng)格刻劃一個具有共享結(jié)構(gòu)和語義的系統(tǒng)家族義的系統(tǒng)家族v 軟件體系結(jié)構(gòu)模式軟件體系結(jié)構(gòu)模式(Architectural Pattern) 一種軟件體系結(jié)構(gòu)模式是對某個具體環(huán)境下問題的結(jié)構(gòu)性解決一種軟件體系結(jié)構(gòu)模式是對某個具體環(huán)境下問題的結(jié)構(gòu)性解決方法方法v 體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)風(fēng)格 模式系統(tǒng)中的詞匯模式系統(tǒng)中的詞匯 目前尚不完善目前尚不完善 每個風(fēng)格可以視為一組構(gòu)件的集合,以及構(gòu)件間的交互(連接每個風(fēng)格可

5、以視為一組構(gòu)件的集合,以及構(gòu)件間的交互(連接器)器) 構(gòu)件(構(gòu)件(Components) 連接器(連接器(Connectors) E.g. C/S結(jié)構(gòu)中結(jié)構(gòu)中 構(gòu)件: Client, Server 連接器: C/S間的通訊協(xié)議軟件體系結(jié)構(gòu)的構(gòu)建風(fēng)格軟件體系結(jié)構(gòu)的構(gòu)建風(fēng)格v 風(fēng)格分類:風(fēng)格分類: 1. 1. 管道管道- -過濾器風(fēng)格過濾器風(fēng)格 2. 2. 面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格 3. 3. 事件驅(qū)動風(fēng)格事件驅(qū)動風(fēng)格 4. 4. 分層風(fēng)格分層風(fēng)格 5. 5. 數(shù)據(jù)共享風(fēng)格數(shù)據(jù)共享風(fēng)格 6. 6. 解釋器風(fēng)格解釋器風(fēng)格 7. 7. 反饋控制環(huán)風(fēng)格反饋控制環(huán)風(fēng)格 8. 8. 異構(gòu)風(fēng)格的集成異構(gòu)風(fēng)格的

6、集成v 特別注意:體系結(jié)構(gòu)風(fēng)格不是對軟件進行分類的標(biāo)準(zhǔn)。特別注意:體系結(jié)構(gòu)風(fēng)格不是對軟件進行分類的標(biāo)準(zhǔn)。它僅僅是表示描述軟件的不同角度而已它僅僅是表示描述軟件的不同角度而已 例如一個系統(tǒng)采用了分層風(fēng)格,但這并不妨礙它用面向?qū)ο蟮睦缫粋€系統(tǒng)采用了分層風(fēng)格,但這并不妨礙它用面向?qū)ο蟮姆椒▉韺崿F(xiàn)。同一個系統(tǒng)采用多種風(fēng)格造成了所謂體系結(jié)構(gòu)風(fēng)方法來實現(xiàn)。同一個系統(tǒng)采用多種風(fēng)格造成了所謂體系結(jié)構(gòu)風(fēng)格的異構(gòu)組合。格的異構(gòu)組合。v 概述概述 在管道在管道-過濾器風(fēng)格下,每個功能模塊都有一組輸入和輸出。功過濾器風(fēng)格下,每個功能模塊都有一組輸入和輸出。功能模塊稱作過濾器(能模塊稱作過濾器(filters);功能

7、模塊間的連接可以看作輸入);功能模塊間的連接可以看作輸入、輸出數(shù)據(jù)流之間的通路,所以稱作管道(、輸出數(shù)據(jù)流之間的通路,所以稱作管道(pipes)。)。 管道管道-過濾器風(fēng)格的特性之一在于過濾器的相對獨立性,即過濾過濾器風(fēng)格的特性之一在于過濾器的相對獨立性,即過濾器獨立完成自身功能,相互之間無需進行狀態(tài)交互。器獨立完成自身功能,相互之間無需進行狀態(tài)交互。 v 過濾器是獨立運行的構(gòu)件過濾器是獨立運行的構(gòu)件 非臨近的過濾器之間不共享狀態(tài)非臨近的過濾器之間不共享狀態(tài) 過濾器自身無狀態(tài)過濾器自身無狀態(tài)v 過濾器對其處理上下連接的過濾器過濾器對其處理上下連接的過濾器“無知無知” 對相鄰的過濾器不施加任何限

8、制對相鄰的過濾器不施加任何限制v 結(jié)果的正確性不依賴于各個過濾器運行的先后次序結(jié)果的正確性不依賴于各個過濾器運行的先后次序 各過濾器在輸入具備后完成自己的計算。完整的計算過程包含各過濾器在輸入具備后完成自己的計算。完整的計算過程包含在過濾器之間的拓?fù)浣Y(jié)構(gòu)中。在過濾器之間的拓?fù)浣Y(jié)構(gòu)中。管道管道- -過濾器風(fēng)格過濾器風(fēng)格v 一個管道一個管道- -過濾器風(fēng)格的示意圖如下圖所示:過濾器風(fēng)格的示意圖如下圖所示:FiltersPipes管道管道- -過濾器風(fēng)格過濾器風(fēng)格v 一個采用了嵌套的管道過濾器的系統(tǒng)示例:一個采用了嵌套的管道過濾器的系統(tǒng)示例:v 設(shè)計者可以將整個系統(tǒng)的輸入、輸出特性簡單的理解為設(shè)計者

9、可以將整個系統(tǒng)的輸入、輸出特性簡單的理解為各個過濾器功能的合成。各個過濾器功能的合成。 設(shè)計人員將整個系統(tǒng)的輸入輸出行為理解為單個過濾器行為的設(shè)計人員將整個系統(tǒng)的輸入輸出行為理解為單個過濾器行為的疊加與組合。這樣可以將問題分解,化繁為簡。將系統(tǒng)抽象成疊加與組合。這樣可以將問題分解,化繁為簡。將系統(tǒng)抽象成一個一個“黑箱黑箱”,其輸入是系統(tǒng)中第一個過濾器的輸入管道,輸,其輸入是系統(tǒng)中第一個過濾器的輸入管道,輸出是系統(tǒng)中最后一個過濾器的輸出管道,而其內(nèi)部各功能模塊出是系統(tǒng)中最后一個過濾器的輸出管道,而其內(nèi)部各功能模塊的具體實現(xiàn)對用戶完全透明。的具體實現(xiàn)對用戶完全透明。 v 管道管道-過濾器風(fēng)格支持功

10、能模塊的復(fù)用過濾器風(fēng)格支持功能模塊的復(fù)用 任何兩個過濾器,只要它們之間傳送的數(shù)據(jù)遵守共同的規(guī)約,任何兩個過濾器,只要它們之間傳送的數(shù)據(jù)遵守共同的規(guī)約,就可以相連接。每個過濾器都有自己獨立的輸入輸出接口,如就可以相連接。每個過濾器都有自己獨立的輸入輸出接口,如果過濾器間傳輸?shù)臄?shù)據(jù)遵守其規(guī)約,只要用管道將它們連接就果過濾器間傳輸?shù)臄?shù)據(jù)遵守其規(guī)約,只要用管道將它們連接就可以正常工作??梢哉9ぷ?。 v 基于管道基于管道-過濾器風(fēng)格的系統(tǒng)具有較強的可維護性和可擴過濾器風(fēng)格的系統(tǒng)具有較強的可維護性和可擴展性。展性。 舊的過濾器可以被替代,新的過濾器可以添加到已有的系統(tǒng)上舊的過濾器可以被替代,新的過濾器可

11、以添加到已有的系統(tǒng)上。軟件的易于維護和升級是衡量軟件系統(tǒng)質(zhì)量的重要指標(biāo)之一。軟件的易于維護和升級是衡量軟件系統(tǒng)質(zhì)量的重要指標(biāo)之一,在管道,在管道-過濾器模型中,只要遵守輸入輸出數(shù)據(jù)規(guī)約,任何一過濾器模型中,只要遵守輸入輸出數(shù)據(jù)規(guī)約,任何一個過濾器都可以被另一個新的過濾器代替,同時為增強程序功個過濾器都可以被另一個新的過濾器代替,同時為增強程序功能,可以添加新的過濾器。這樣,系統(tǒng)的可維護性和可升級性能,可以添加新的過濾器。這樣,系統(tǒng)的可維護性和可升級性得到了保證。得到了保證。 v 支持一些特定的分析,如吞吐量計算和死鎖檢測等。支持一些特定的分析,如吞吐量計算和死鎖檢測等。 利用管道利用管道-過濾

12、器風(fēng)格的視圖,可以很容易的得到系統(tǒng)的資源使過濾器風(fēng)格的視圖,可以很容易的得到系統(tǒng)的資源使用和請求的狀態(tài)圖。然后,根據(jù)操作系統(tǒng)原理等相關(guān)理論中的用和請求的狀態(tài)圖。然后,根據(jù)操作系統(tǒng)原理等相關(guān)理論中的死鎖檢測方法就可以分析出系統(tǒng)目前所處的狀態(tài),是否存在死死鎖檢測方法就可以分析出系統(tǒng)目前所處的狀態(tài),是否存在死鎖可能及如何消除死鎖等問題。鎖可能及如何消除死鎖等問題。 v 管道管道-過濾器風(fēng)格具有并發(fā)性過濾器風(fēng)格具有并發(fā)性 每個過濾器作為一個單獨的執(zhí)行任務(wù),可以與其它過濾器并發(fā)每個過濾器作為一個單獨的執(zhí)行任務(wù),可以與其它過濾器并發(fā)執(zhí)行。過濾器的執(zhí)行是獨立的,不依賴于其它過濾器的。在實執(zhí)行。過濾器的執(zhí)行是

13、獨立的,不依賴于其它過濾器的。在實際運行時,可以將存在并發(fā)可能的多個過濾器看作多個并發(fā)的際運行時,可以將存在并發(fā)可能的多個過濾器看作多個并發(fā)的任務(wù)并行執(zhí)行,從而大大提高系統(tǒng)的整體效率,加快處理速度任務(wù)并行執(zhí)行,從而大大提高系統(tǒng)的整體效率,加快處理速度。 管道管道- -過濾器風(fēng)格不足過濾器風(fēng)格不足v 交互式處理能力弱交互式處理能力弱 管道管道-過濾器模型適于數(shù)據(jù)流的處理和變換,不適合為與用戶交過濾器模型適于數(shù)據(jù)流的處理和變換,不適合為與用戶交互頻繁的系統(tǒng)建模。在這種模型中,每個過濾器都有自己的數(shù)互頻繁的系統(tǒng)建模。在這種模型中,每個過濾器都有自己的數(shù)據(jù),這些數(shù)據(jù)或者是從磁盤存儲器中讀取來,或者是由

14、另一個據(jù),這些數(shù)據(jù)或者是從磁盤存儲器中讀取來,或者是由另一個過濾器的輸出導(dǎo)入進來,整個系統(tǒng)沒有一個共享的數(shù)據(jù)區(qū)。這過濾器的輸出導(dǎo)入進來,整個系統(tǒng)沒有一個共享的數(shù)據(jù)區(qū)。這樣,當(dāng)用戶要操作某一項數(shù)據(jù)時,要涉及到多個過濾器對相應(yīng)樣,當(dāng)用戶要操作某一項數(shù)據(jù)時,要涉及到多個過濾器對相應(yīng)數(shù)據(jù)的操作,其實現(xiàn)較為復(fù)雜。由以上的缺點,可以對每個過數(shù)據(jù)的操作,其實現(xiàn)較為復(fù)雜。由以上的缺點,可以對每個過濾器增加相應(yīng)的用戶控制接口,使得外部可以對過濾器的執(zhí)行濾器增加相應(yīng)的用戶控制接口,使得外部可以對過濾器的執(zhí)行進行控制。進行控制。 管道管道- -過濾器風(fēng)格不足過濾器風(fēng)格不足改進的過濾器改進的過濾器v 管道管道-過濾器

15、風(fēng)格往往導(dǎo)致系統(tǒng)處理過程的成批操作。過濾器風(fēng)格往往導(dǎo)致系統(tǒng)處理過程的成批操作。 v 設(shè)計者也許不得不花費精力協(xié)調(diào)兩個相對獨立但又存在設(shè)計者也許不得不花費精力協(xié)調(diào)兩個相對獨立但又存在某種關(guān)系的數(shù)據(jù)流之間的關(guān)系,例如多過濾器并發(fā)執(zhí)行某種關(guān)系的數(shù)據(jù)流之間的關(guān)系,例如多過濾器并發(fā)執(zhí)行時數(shù)據(jù)流之間的同步問題等。時數(shù)據(jù)流之間的同步問題等。v 根據(jù)實際設(shè)計的需要,設(shè)計者也需要對數(shù)據(jù)傳輸進行特根據(jù)實際設(shè)計的需要,設(shè)計者也需要對數(shù)據(jù)傳輸進行特定的處理(如為了防止數(shù)據(jù)泄漏而采取加密等手段),定的處理(如為了防止數(shù)據(jù)泄漏而采取加密等手段),導(dǎo)致過濾器必須對輸入、輸出管道中的數(shù)據(jù)流進行解析導(dǎo)致過濾器必須對輸入、輸出管

16、道中的數(shù)據(jù)流進行解析或反解析,增加了過濾器具體實現(xiàn)的復(fù)雜性?;蚍唇馕觯黾恿诉^濾器具體實現(xiàn)的復(fù)雜性。v 通信的目的是傳遞消息。消息具有不同的形式,例如:通信的目的是傳遞消息。消息具有不同的形式,例如:符號、文字、語音、音樂、數(shù)據(jù)、圖片、圖像等等。因符號、文字、語音、音樂、數(shù)據(jù)、圖片、圖像等等。因而,根據(jù)所傳遞消息的不同,目前通信業(yè)務(wù)可以分為電而,根據(jù)所傳遞消息的不同,目前通信業(yè)務(wù)可以分為電報、電話、傳真、數(shù)據(jù)傳輸及可視電話等。對于基本的報、電話、傳真、數(shù)據(jù)傳輸及可視電話等。對于基本的點對點通信,是把發(fā)送端的消息傳遞到接收端。點對點通信,是把發(fā)送端的消息傳遞到接收端。 數(shù)字通信概念模型發(fā)送端接收

17、端v 將上圖發(fā)送端進一步細(xì)分為信息源和發(fā)送設(shè)備,將接收將上圖發(fā)送端進一步細(xì)分為信息源和發(fā)送設(shè)備,將接收端細(xì)分為接收設(shè)備和受信者;同時,在通信過程中會有端細(xì)分為接收設(shè)備和受信者;同時,在通信過程中會有噪聲干擾,在模型中添加噪聲源可得到圖所示的數(shù)字通噪聲干擾,在模型中添加噪聲源可得到圖所示的數(shù)字通信系統(tǒng)粗略模型。信系統(tǒng)粗略模型。數(shù)字通信系統(tǒng)粗略模型信息源發(fā)送設(shè)備接收設(shè)備受信者噪聲源信道信道v 圖中各單元作用:圖中各單元作用: 信息源把各種可能信息轉(zhuǎn)換成原始電信號;信息源把各種可能信息轉(zhuǎn)換成原始電信號; 發(fā)送設(shè)備對原始電信號完成某種變化,便于原始信號在信道中發(fā)送設(shè)備對原始電信號完成某種變化,便于原始

18、信號在信道中傳輸,然后再送入信道;傳輸,然后再送入信道; 信道是指信號傳輸?shù)耐ǖ?,它既可以看成是管道(因為它的目信道是指信號傳輸?shù)耐ǖ?,它既可以看成是管道(因為它的目的并不是為了實現(xiàn)某種功能,僅僅是為了信號的傳輸),也可的并不是為了實現(xiàn)某種功能,僅僅是為了信號的傳輸),也可以從某種意義上看做是過濾以從某種意義上看做是過濾 器(因為信號經(jīng)過信道后會產(chǎn)生器(因為信號經(jīng)過信道后會產(chǎn)生一些變化,比如加入噪聲的影響,從而改變一些變化,比如加入噪聲的影響,從而改變 了發(fā)送設(shè)備發(fā)出的了發(fā)送設(shè)備發(fā)出的信號)。信號)。 接收設(shè)備從接收信號中恢復(fù)出相應(yīng)的原始信號;接收設(shè)備從接收信號中恢復(fù)出相應(yīng)的原始信號; 受信者

19、(也稱為信息宿或接收終端)是將復(fù)原的原始信號轉(zhuǎn)換受信者(也稱為信息宿或接收終端)是將復(fù)原的原始信號轉(zhuǎn)換成相應(yīng)的消息。成相應(yīng)的消息。 噪聲源是信道中的噪聲以及分散在通信系統(tǒng)其它各處的噪聲的噪聲源是信道中的噪聲以及分散在通信系統(tǒng)其它各處的噪聲的集中體現(xiàn),它使原信號受到了干擾,產(chǎn)生畸變。集中體現(xiàn),它使原信號受到了干擾,產(chǎn)生畸變。 v 在數(shù)字通信中存在以下幾個突出的問題:在數(shù)字通信中存在以下幾個突出的問題: 數(shù)字信號傳輸時,信道噪聲或干擾所造成的差錯,原則上都可數(shù)字信號傳輸時,信道噪聲或干擾所造成的差錯,原則上都可以通過差錯控制編碼等手段來控制。為此,在發(fā)送端需要增加以通過差錯控制編碼等手段來控制。為

20、此,在發(fā)送端需要增加一個編碼器,而在接收一個編碼器,而在接收 端相應(yīng)的需要一個解碼器。端相應(yīng)的需要一個解碼器。 當(dāng)需要保密時,可以有效的對基帶信號進行加密,防止信息被當(dāng)需要保密時,可以有效的對基帶信號進行加密,防止信息被竊取或通信竊取或通信 被破壞。此時,在接收端就需要進行解密。被破壞。此時,在接收端就需要進行解密。 由于數(shù)字通信傳輸?shù)氖且粋€接一個按節(jié)拍傳送的數(shù)字信號單元由于數(shù)字通信傳輸?shù)氖且粋€接一個按節(jié)拍傳送的數(shù)字信號單元,即碼元,因而接收端必須與發(fā)送端按相同的節(jié)拍進行接收。,即碼元,因而接收端必須與發(fā)送端按相同的節(jié)拍進行接收。不然,會因接收節(jié)拍不一致而造成混亂,使接收倒的數(shù)據(jù)全部不然,會因

21、接收節(jié)拍不一致而造成混亂,使接收倒的數(shù)據(jù)全部無效。因此,數(shù)字通信系統(tǒng)中必須有同步控制構(gòu)件。無效。因此,數(shù)字通信系統(tǒng)中必須有同步控制構(gòu)件。v 針對上述問題,可得到數(shù)字通信系統(tǒng)詳細(xì)模型(下圖)針對上述問題,可得到數(shù)字通信系統(tǒng)詳細(xì)模型(下圖) 數(shù)字通信系統(tǒng)詳細(xì)模型v 管道管道-過濾器模式的體系結(jié)構(gòu)是面向數(shù)據(jù)流的軟件體系結(jié)過濾器模式的體系結(jié)構(gòu)是面向數(shù)據(jù)流的軟件體系結(jié)構(gòu)。它最典型的應(yīng)用是在編譯系統(tǒng)。一個普通的編譯系構(gòu)。它最典型的應(yīng)用是在編譯系統(tǒng)。一個普通的編譯系統(tǒng)包括詞法分析器,語法分析器,語義分析與中間代碼統(tǒng)包括詞法分析器,語法分析器,語義分析與中間代碼生成器,優(yōu)化器,目標(biāo)代碼生成器等一系列對源程序進

22、生成器,優(yōu)化器,目標(biāo)代碼生成器等一系列對源程序進行處理的過程。人們可以將編譯系統(tǒng)看作一系列過濾器行處理的過程。人們可以將編譯系統(tǒng)看作一系列過濾器的連接體,按照管道的連接體,按照管道&過濾器的體系結(jié)構(gòu)進行設(shè)計。過濾器的體系結(jié)構(gòu)進行設(shè)計。v 需求描述:假設(shè)有一批實時的二維坐標(biāo)點數(shù)據(jù)需要變換需求描述:假設(shè)有一批實時的二維坐標(biāo)點數(shù)據(jù)需要變換(即對點的橫、縱坐標(biāo)進行縮放),并在屏幕上進行顯(即對點的橫、縱坐標(biāo)進行縮放),并在屏幕上進行顯示,要求外部要能設(shè)置變換規(guī)則(如縮放倍數(shù))和顯示示,要求外部要能設(shè)置變換規(guī)則(如縮放倍數(shù))和顯示規(guī)則(如顯示模式和顯示顏色)。規(guī)則(如顯示模式和顯示顏色)。v 體

23、系結(jié)構(gòu)建模體系結(jié)構(gòu)建模 這是一個對坐標(biāo)點的數(shù)據(jù)流進行順序處理的過程,可以應(yīng)用管這是一個對坐標(biāo)點的數(shù)據(jù)流進行順序處理的過程,可以應(yīng)用管道道-過濾器體系結(jié)構(gòu)建模。將這個系統(tǒng)分為兩個過濾器,一個為過濾器體系結(jié)構(gòu)建模。將這個系統(tǒng)分為兩個過濾器,一個為坐標(biāo)點數(shù)據(jù)流變換過濾器,另一個為坐標(biāo)點數(shù)據(jù)流實時顯示過坐標(biāo)點數(shù)據(jù)流變換過濾器,另一個為坐標(biāo)點數(shù)據(jù)流實時顯示過濾器。其中,坐標(biāo)點數(shù)據(jù)流變換過濾器有一個外部控制接口對濾器。其中,坐標(biāo)點數(shù)據(jù)流變換過濾器有一個外部控制接口對變換規(guī)則如縮放倍數(shù)進行設(shè)置,坐標(biāo)點數(shù)據(jù)流實時顯示過濾器變換規(guī)則如縮放倍數(shù)進行設(shè)置,坐標(biāo)點數(shù)據(jù)流實時顯示過濾器有一個外部控制接口對顯示規(guī)則如顯示

24、模式和顯示顏色進行設(shè)有一個外部控制接口對顯示規(guī)則如顯示模式和顯示顏色進行設(shè)置。整個系統(tǒng)的體系結(jié)構(gòu)如圖所示。置。整個系統(tǒng)的體系結(jié)構(gòu)如圖所示。 系統(tǒng)體系結(jié)構(gòu)圖 v 過濾器的設(shè)計過濾器的設(shè)計 可以將過濾器用狀態(tài)轉(zhuǎn)換圖表示。過濾器有如下狀態(tài):停止?fàn)羁梢詫⑦^濾器用狀態(tài)轉(zhuǎn)換圖表示。過濾器有如下狀態(tài):停止?fàn)顟B(tài),工作狀態(tài),等待狀態(tài),休眠狀態(tài)。態(tài),工作狀態(tài),等待狀態(tài),休眠狀態(tài)。 停止?fàn)顟B(tài):表示過濾器處于待啟動狀態(tài),當(dāng)外部啟動過濾器后停止?fàn)顟B(tài):表示過濾器處于待啟動狀態(tài),當(dāng)外部啟動過濾器后,過濾器處于處理狀態(tài);,過濾器處于處理狀態(tài); 處理狀態(tài):表示過濾器正在處理輸入數(shù)據(jù)隊列中的數(shù)據(jù);處理狀態(tài):表示過濾器正在處理輸入

25、數(shù)據(jù)隊列中的數(shù)據(jù); 等待狀態(tài):表示過濾器的輸入數(shù)據(jù)隊列為空,此時過濾器等待等待狀態(tài):表示過濾器的輸入數(shù)據(jù)隊列為空,此時過濾器等待,當(dāng)有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài);,當(dāng)有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài); 休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能是由于外界用戶要設(shè)置過濾器的控制參數(shù),這樣暫時將過濾器是由于外界用戶要設(shè)置過濾器的控制參數(shù),這樣暫時將過濾器掛起但不中止它,當(dāng)控制參數(shù)設(shè)置完畢后再將過濾器還原,繼掛起但不中止它,當(dāng)控制參數(shù)設(shè)置完畢后再將過濾器還原,繼續(xù)運行。這樣,實現(xiàn)了較高的效率。續(xù)運行。這樣,實現(xiàn)了較高的效率

26、。管道管道- -過濾器風(fēng)格實例過濾器風(fēng)格實例過濾器狀態(tài)轉(zhuǎn)換圖 v Unix系統(tǒng)中的管道過濾器結(jié)構(gòu)系統(tǒng)中的管道過濾器結(jié)構(gòu) ls invoices| grep e August| sort過濾器介紹過濾器介紹v 過濾器的作用:對輸入數(shù)據(jù)的處理過濾器的作用:對輸入數(shù)據(jù)的處理 enriches : computing and adding info refines : concentrating or extracting info transforms : delivering data into some other representation v 被動式過濾器(被動式過濾器(PassivePa

27、ssive filter filter) adjacent pipes pulls/pushes output/input data from/into the filter active either as a function ( pull ) or as a procedure ( push )v 主動式過濾器(主動式過濾器(ActiveActive filter filter) filter is active in a loop , check the pipes for data processing on its own as a separate program or thre

28、adv Data Source (數(shù)據(jù)源)(數(shù)據(jù)源) input data stream to the system , for example A file consisting of lines of text A sensor delivering a sequence of numbers data can be pushed or pulled into first processing stagev Pipes(管道)(管道) connections between filters , between data source and the first filter , betwe

29、en the last filter and the data sink synchronizes joined active filters , for example , by a FIFO ( first-in-first-out ) buffer for passive filters , the pipes can be implemented by a direct call Make the filter recombination harderv Data Sink (數(shù)據(jù)接收端)(數(shù)據(jù)接收端) consumes output datav 類型類型 pipelines line

30、ar sequences of filters bounded pipes limited amount of data on a pipe typed pipes data strongly typed batch sequential data streams are not incrementalv 概述概述 面相對象模式集數(shù)據(jù)抽象、抽象數(shù)據(jù)類型、類繼承為一體,使面相對象模式集數(shù)據(jù)抽象、抽象數(shù)據(jù)類型、類繼承為一體,使軟件工程公認(rèn)的模塊化、信息隱藏、抽象、重用性等原則在面軟件工程公認(rèn)的模塊化、信息隱藏、抽象、重用性等原則在面向?qū)ο箫L(fēng)格下得以充分實現(xiàn)。向?qū)ο箫L(fēng)格下得以充分實現(xiàn)。 v 應(yīng)用場合

31、應(yīng)用場合 面向?qū)ο蟮捏w系結(jié)構(gòu)模式適用于數(shù)據(jù)和功能分離的系統(tǒng)中,同面向?qū)ο蟮捏w系結(jié)構(gòu)模式適用于數(shù)據(jù)和功能分離的系統(tǒng)中,同樣也適合于問題域模型比較明顯,或需要人機交互界面的系統(tǒng)樣也適合于問題域模型比較明顯,或需要人機交互界面的系統(tǒng)。大多數(shù)應(yīng)用事件驅(qū)動風(fēng)格的系統(tǒng)也常常應(yīng)用了面向?qū)ο箫L(fēng)格。大多數(shù)應(yīng)用事件驅(qū)動風(fēng)格的系統(tǒng)也常常應(yīng)用了面向?qū)ο箫L(fēng)格。面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu) v 高度模塊性高度模塊性 v 封裝功能封裝功能v 代碼共享代碼共享v 靈活性靈活性 v 易維護性易維護性v 可擴充性可擴充性 面向?qū)ο箫L(fēng)格最大的不足在于如果一個對象需要調(diào)用另面向?qū)ο箫L(fēng)格最大的不足在于如果一個對象需要調(diào)用另一個對象,它就必須

32、知道那個對象的標(biāo)識(對象名或?qū)σ粋€對象,它就必須知道那個對象的標(biāo)識(對象名或?qū)ο笠茫?,這樣就無形之中增強了對象之間的依賴關(guān)系象引用),這樣就無形之中增強了對象之間的依賴關(guān)系。如果一個對象改變了自己的標(biāo)識,就必須通知系統(tǒng)中。如果一個對象改變了自己的標(biāo)識,就必須通知系統(tǒng)中所有和它有調(diào)用關(guān)系的對象,否則系統(tǒng)就無法正常運行所有和它有調(diào)用關(guān)系的對象,否則系統(tǒng)就無法正常運行。面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格v 實例背景實例背景 目前,一個標(biāo)準(zhǔn)的計算機應(yīng)用系統(tǒng)應(yīng)該由三部分組成:計算機目前,一個標(biāo)準(zhǔn)的計算機應(yīng)用系統(tǒng)應(yīng)該由三部分組成:計算機操作系統(tǒng)(包括各種應(yīng)用軟件系統(tǒng))、數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)絡(luò)操作系統(tǒng)(包括各種應(yīng)用軟

33、件系統(tǒng))、數(shù)據(jù)庫管理系統(tǒng)和網(wǎng)絡(luò)環(huán)境(包括網(wǎng)絡(luò)硬件設(shè)備和各種協(xié)議棧、網(wǎng)絡(luò)服務(wù)等),這樣環(huán)境(包括網(wǎng)絡(luò)硬件設(shè)備和各種協(xié)議棧、網(wǎng)絡(luò)服務(wù)等),這樣一個具有分布式特性和開放性的系統(tǒng)稱為開放分布式系統(tǒng)(一個具有分布式特性和開放性的系統(tǒng)稱為開放分布式系統(tǒng)(ODS,Open Distributed System)。)。 v CBA方法方法 : 它有三個基本的建模概念:協(xié)作、類型和細(xì)它有三個基本的建模概念:協(xié)作、類型和細(xì)化?;?。 協(xié)作(協(xié)作(Collaboration):根據(jù)構(gòu)件所承擔(dān)的不同角色,協(xié)作定根據(jù)構(gòu)件所承擔(dān)的不同角色,協(xié)作定義了一組構(gòu)件之間的動作(義了一組構(gòu)件之間的動作(Action)集合。)集合。

34、類型類型 (Type):通過描述一個構(gòu)件的可視外部行為來定義構(gòu)件通過描述一個構(gòu)件的可視外部行為來定義構(gòu)件在系統(tǒng)中所承擔(dān)的功能。在系統(tǒng)中所承擔(dān)的功能。 細(xì)化(細(xì)化(Refinement) :體現(xiàn)了對同一事物的兩種不同描述之間體現(xiàn)了對同一事物的兩種不同描述之間的關(guān)系,抽象(的關(guān)系,抽象(Abstraction)描述為基礎(chǔ),實現(xiàn)()描述為基礎(chǔ),實現(xiàn)(Realization)描述可以看作抽象描述的具體的形式。)描述可以看作抽象描述的具體的形式。 面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格v ODS系統(tǒng)中構(gòu)件、連接器和配置的模型系統(tǒng)中構(gòu)件、連接器和配置的模型,如下圖所示:如下圖所示:面向?qū)ο箫L(fēng)格面

35、向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格接口非功能屬性進化約束語義類型 構(gòu)件連接器接口類型語義約束進化易理解性進化性可擴充性異構(gòu)性細(xì)化性復(fù)合性配置v 構(gòu)件的描述方法構(gòu)件的描述方法:利用利用GUI體系結(jié)構(gòu)框架自動生成工具,體系結(jié)構(gòu)框架自動生成工具,可以完成下述幾點功能:可以完成下述幾點功能: 生成構(gòu)件模型,包括構(gòu)件的屬性、接口和實現(xiàn);生成構(gòu)件模型,包括構(gòu)件的屬性、接口和實現(xiàn); 建立連接器模型,包括協(xié)議、屬性和實現(xiàn);建立連接器模型,包括協(xié)議、屬性和實現(xiàn); 體系結(jié)構(gòu)的抽象和封裝;體系結(jié)構(gòu)的抽象和封裝; 類型和類型檢查;類型和類型檢查; 主動規(guī)范,提供設(shè)計向?qū)?;主動?guī)范,提供設(shè)計向?qū)В?多視圖模式,對不同層

36、次的用戶顯示不同的內(nèi)容;多視圖模式,對不同層次的用戶顯示不同的內(nèi)容; 生成實現(xiàn),如將構(gòu)件對應(yīng)為面向?qū)ο蠹夹g(shù)中的類;生成實現(xiàn),如將構(gòu)件對應(yīng)為面向?qū)ο蠹夹g(shù)中的類; 將系統(tǒng)的修改動態(tài)映射到實現(xiàn)。將系統(tǒng)的修改動態(tài)映射到實現(xiàn)。面向?qū)ο箫L(fēng)格實例面向?qū)ο箫L(fēng)格實例v 具有自適應(yīng)穩(wěn)定性的連接器模型具有自適應(yīng)穩(wěn)定性的連接器模型v 連接器中的通信協(xié)議棧連接器中的通信協(xié)議棧面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格面向?qū)ο箫L(fēng)格構(gòu)件命名和尋址協(xié)議構(gòu)件通信管理協(xié)議構(gòu)件通信傳輸控制協(xié)議構(gòu)件通信傳輸協(xié)議連接器的自適應(yīng)穩(wěn)定算法:為了提高通信協(xié)議棧在構(gòu)件通信過程中的穩(wěn)定性,需要設(shè)計某種自適應(yīng)穩(wěn)定算法,這樣可以修復(fù)構(gòu)件通信時出現(xiàn)的錯誤。

37、 系統(tǒng)功能結(jié)構(gòu) v 系統(tǒng)功能介紹:系統(tǒng)功能介紹: 檔案管理根據(jù)高校人事檔案管理的特點,本模塊可通過錄入各檔案管理根據(jù)高校人事檔案管理的特點,本模塊可通過錄入各類人事檔案信息,來構(gòu)造檔案數(shù)據(jù)庫,編制各種目錄索檢。針類人事檔案信息,來構(gòu)造檔案數(shù)據(jù)庫,編制各種目錄索檢。針對檔案材料錄入工作量較大,在該功能模塊中設(shè)置了多種方式對檔案材料錄入工作量較大,在該功能模塊中設(shè)置了多種方式快速錄入法,如對指定的部分內(nèi)容可采用代碼錄入和菜單選項快速錄入法,如對指定的部分內(nèi)容可采用代碼錄入和菜單選項等輸入方法等輸入方法. 信息檢索該模塊主要是檢索有關(guān)的人事檔案信息,其檢索方式信息檢索該模塊主要是檢索有關(guān)的人事檔案信

38、息,其檢索方式為姓氏筆畫檢索目錄。在具體檢索中又可分為精確查詢和模糊為姓氏筆畫檢索目錄。在具體檢索中又可分為精確查詢和模糊查詢,并可將檢索內(nèi)容動態(tài)輸出,滿足檔案查詢的需要。查詢,并可將檢索內(nèi)容動態(tài)輸出,滿足檔案查詢的需要。 檔案借閱該模塊主要是對檔案的借閱情況、歸還情況、利用登檔案借閱該模塊主要是對檔案的借閱情況、歸還情況、利用登記等方面進行管理。它能為研究如何更有效地利用人事檔案資記等方面進行管理。它能為研究如何更有效地利用人事檔案資料提供必要的信息。料提供必要的信息。 檔案轉(zhuǎn)遞該模塊包括人事檔案的轉(zhuǎn)進和轉(zhuǎn)出管理,編制清單,檔案轉(zhuǎn)遞該模塊包括人事檔案的轉(zhuǎn)進和轉(zhuǎn)出管理,編制清單,并能在檔案轉(zhuǎn)遞

39、后,對已變更檔案數(shù)據(jù)庫進行相應(yīng)地調(diào)整,以并能在檔案轉(zhuǎn)遞后,對已變更檔案數(shù)據(jù)庫進行相應(yīng)地調(diào)整,以完成相應(yīng)檔案的刪加。完成相應(yīng)檔案的刪加。 統(tǒng)計報表該模塊主要用于統(tǒng)計庫存的各類人事檔案的實際數(shù)量統(tǒng)計報表該模塊主要用于統(tǒng)計庫存的各類人事檔案的實際數(shù)量,及每年歸檔的各類檔案數(shù)量,并可完成相應(yīng)的圖形繪制和報,及每年歸檔的各類檔案數(shù)量,并可完成相應(yīng)的圖形繪制和報表打印。其中,在報表生成中,該模塊可根據(jù)管理人員對報表表打印。其中,在報表生成中,該模塊可根據(jù)管理人員對報表的自定義設(shè)置來生成相應(yīng)的非范式報表。的自定義設(shè)置來生成相應(yīng)的非范式報表。 系統(tǒng)維護由于高校人事檔案的數(shù)據(jù)管理是一項非常重要的工作系統(tǒng)維護由于

40、高校人事檔案的數(shù)據(jù)管理是一項非常重要的工作,尤其是它的安全可靠性。因此,在進入本模塊操作之前,系,尤其是它的安全可靠性。因此,在進入本模塊操作之前,系統(tǒng)會提醒用戶輸入姓名、操作口令和權(quán)限級別。同時該功能模統(tǒng)會提醒用戶輸入姓名、操作口令和權(quán)限級別。同時該功能模塊還包括操作員管理、口令修改、重新登錄、權(quán)限級別設(shè)置、塊還包括操作員管理、口令修改、重新登錄、權(quán)限級別設(shè)置、系統(tǒng)日志及系統(tǒng)初始化六個子模塊。系統(tǒng)日志及系統(tǒng)初始化六個子模塊。 系統(tǒng)幫助本模塊提供了在線聯(lián)機幫助,可實現(xiàn)幫助主題的查詢系統(tǒng)幫助本模塊提供了在線聯(lián)機幫助,可實現(xiàn)幫助主題的查詢,還提供了計算器、日記,還提供了計算器、日記/日歷等系統(tǒng)工具

41、和關(guān)于本系統(tǒng)的簡介日歷等系統(tǒng)工具和關(guān)于本系統(tǒng)的簡介。 系統(tǒng)活動圖 系統(tǒng)類結(jié)構(gòu)圖 v 特征特征 事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件的處理表征出來。事件的處理表征出來。 如圖示:如圖示:事件接收器事件處理器輸入反饋輸出v 事件驅(qū)動系統(tǒng)具有以下一些特點:事件驅(qū)動系統(tǒng)具有以下一些特點: 系統(tǒng)是由若干子系統(tǒng)或元素所組成的一個整體;系統(tǒng)是由若干子系統(tǒng)或元素所組成的一個整體; 系統(tǒng)有一定的目標(biāo),各子系統(tǒng)在某一種消息機制的控制下,為系統(tǒng)有一定的目標(biāo),各子系統(tǒng)在某一種消息機制的控制下,為了這個目標(biāo)而協(xié)調(diào)行動;了這個目標(biāo)而協(xié)調(diào)行動; 在

42、某一種消息機制的控制下,系統(tǒng)作為一個整體與環(huán)境相適應(yīng)在某一種消息機制的控制下,系統(tǒng)作為一個整體與環(huán)境相適應(yīng)和協(xié)調(diào);和協(xié)調(diào);v 事件驅(qū)動系統(tǒng)具有以下一些特點(續(xù)):事件驅(qū)動系統(tǒng)具有以下一些特點(續(xù)): 在一個系統(tǒng)的若干子系統(tǒng)中,必定有一個子系統(tǒng)起著主導(dǎo)作用在一個系統(tǒng)的若干子系統(tǒng)中,必定有一個子系統(tǒng)起著主導(dǎo)作用,而其他子系統(tǒng)則處于從屬地位;,而其他子系統(tǒng)則處于從屬地位; 任一系統(tǒng)和系統(tǒng)內(nèi)的任一元素,都有任一系統(tǒng)和系統(tǒng)內(nèi)的任一元素,都有1個事件收集機制和個事件收集機制和1個事個事件處理機制,通過這種機制與周圍環(huán)境發(fā)生作用和聯(lián)系;件處理機制,通過這種機制與周圍環(huán)境發(fā)生作用和聯(lián)系;v 下圖是一個基于事件

43、驅(qū)動的軟件系統(tǒng)的示意圖:下圖是一個基于事件驅(qū)動的軟件系統(tǒng)的示意圖:AHFECDBIv 事件驅(qū)動風(fēng)格系統(tǒng)設(shè)計時有下述幾條基本原則事件驅(qū)動風(fēng)格系統(tǒng)設(shè)計時有下述幾條基本原則 從系統(tǒng)論的角度來看待描述的對象,合理分解子系統(tǒng),保證各從系統(tǒng)論的角度來看待描述的對象,合理分解子系統(tǒng),保證各個子系統(tǒng)的獨立性和社會性;個子系統(tǒng)的獨立性和社會性; 無論系統(tǒng)多么復(fù)雜,子系統(tǒng)性質(zhì)的差異多么大,任何子系統(tǒng)都無論系統(tǒng)多么復(fù)雜,子系統(tǒng)性質(zhì)的差異多么大,任何子系統(tǒng)都可以按照有無子系統(tǒng)這一性質(zhì)分為可以按照有無子系統(tǒng)這一性質(zhì)分為2類:管理系統(tǒng)和執(zhí)行系統(tǒng)。類:管理系統(tǒng)和執(zhí)行系統(tǒng)。 為了達(dá)到系統(tǒng)的目標(biāo),系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息

44、和執(zhí)為了達(dá)到系統(tǒng)的目標(biāo),系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié)同操作。行消息來協(xié)同操作。 為了達(dá)到系統(tǒng)的目標(biāo),系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)為了達(dá)到系統(tǒng)的目標(biāo),系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié)同操作。行消息來協(xié)同操作。 v 事件驅(qū)動風(fēng)格系統(tǒng)設(shè)計時有下述幾條基本原則事件驅(qū)動風(fēng)格系統(tǒng)設(shè)計時有下述幾條基本原則(續(xù)續(xù)) 在一個完整系統(tǒng)中,必須有這樣一個子系統(tǒng),它沒有上級,必在一個完整系統(tǒng)中,必須有這樣一個子系統(tǒng),它沒有上級,必須收集系統(tǒng)外的事件及下級發(fā)出的事件。須收集系統(tǒng)外的事件及下級發(fā)出的事件。 管理類型的子系統(tǒng)一般不執(zhí)行具體操作,它的主要功能是按照管理類型的子系統(tǒng)一般不執(zhí)行具

45、體操作,它的主要功能是按照自己的職能指揮下級完成任務(wù),功能性操作一般由執(zhí)行類型的自己的職能指揮下級完成任務(wù),功能性操作一般由執(zhí)行類型的子系統(tǒng)完成。子系統(tǒng)完成。 在一般情況下,除最高級管理子系統(tǒng)外,子系統(tǒng)一般是在一般情況下,除最高級管理子系統(tǒng)外,子系統(tǒng)一般是“有問有問才答才答”,即使在必要的情況下需要積極尋找事件時,也必須征,即使在必要的情況下需要積極尋找事件時,也必須征得上級系統(tǒng)得許可,保證了系統(tǒng)的控制流不會分散。得上級系統(tǒng)得許可,保證了系統(tǒng)的控制流不會分散。 事件驅(qū)動系統(tǒng)具有某種意義上的遞歸性,形成了事件驅(qū)動系統(tǒng)具有某種意義上的遞歸性,形成了“部分部分整體整體”的層次結(jié)構(gòu),可以用屬性結(jié)構(gòu)加以

46、表示。一個的層次結(jié)構(gòu),可以用屬性結(jié)構(gòu)加以表示。一個簡單的表示方法是為執(zhí)行系統(tǒng)定義一些類,另外定義一簡單的表示方法是為執(zhí)行系統(tǒng)定義一些類,另外定義一些類作為這些執(zhí)行系統(tǒng)的容器類,也就是管理系統(tǒng)。些類作為這些執(zhí)行系統(tǒng)的容器類,也就是管理系統(tǒng)。v 事件驅(qū)動風(fēng)格的基本結(jié)構(gòu),如下圖事件驅(qū)動風(fēng)格的基本結(jié)構(gòu),如下圖:v 事件驅(qū)動風(fēng)格非常適合于描述系統(tǒng)族,在屬于同一族的事件驅(qū)動風(fēng)格非常適合于描述系統(tǒng)族,在屬于同一族的任何系統(tǒng)中,系統(tǒng)的高級管理子系統(tǒng)的描述是完全類似任何系統(tǒng)中,系統(tǒng)的高級管理子系統(tǒng)的描述是完全類似的,便于重用;的,便于重用; v 由于最高管理子系統(tǒng)牢牢的掌握著控制權(quán),又因為各同由于最高管理子系統(tǒng)

47、牢牢的掌握著控制權(quán),又因為各同級子系統(tǒng)一般不直接發(fā)生關(guān)系,因此容易實現(xiàn)并發(fā)處理級子系統(tǒng)一般不直接發(fā)生關(guān)系,因此容易實現(xiàn)并發(fā)處理和多任務(wù)操作;和多任務(wù)操作;v 基于事件驅(qū)動風(fēng)格的系統(tǒng)具有良好的可擴展性,設(shè)計者基于事件驅(qū)動風(fēng)格的系統(tǒng)具有良好的可擴展性,設(shè)計者只需為某個對象注冊一個事件處理接口就可以將該對象只需為某個對象注冊一個事件處理接口就可以將該對象引入整個系統(tǒng),同時并不影響其它的系統(tǒng)對象。引入整個系統(tǒng),同時并不影響其它的系統(tǒng)對象。 v 定義了包含執(zhí)行子系統(tǒng)和管理子系統(tǒng)的類層次結(jié)構(gòu);定義了包含執(zhí)行子系統(tǒng)和管理子系統(tǒng)的類層次結(jié)構(gòu);v 簡化客戶代碼;簡化客戶代碼;v 使整個系統(tǒng)的設(shè)計更具有一般化。使

48、整個系統(tǒng)的設(shè)計更具有一般化。v 事件驅(qū)動風(fēng)格最大的不足在于構(gòu)件削弱了自身對系統(tǒng)計事件驅(qū)動風(fēng)格最大的不足在于構(gòu)件削弱了自身對系統(tǒng)計算的控制能力算的控制能力 v 事件驅(qū)動風(fēng)格中存在的另一個問題在于數(shù)據(jù)共享事件驅(qū)動風(fēng)格中存在的另一個問題在于數(shù)據(jù)共享 v 系統(tǒng)中各個對象的邏輯關(guān)系變得更加復(fù)雜系統(tǒng)中各個對象的邏輯關(guān)系變得更加復(fù)雜 v 基于面向?qū)ο箫L(fēng)格的系統(tǒng)由多個封裝起來的對象構(gòu)成,基于面向?qū)ο箫L(fēng)格的系統(tǒng)由多個封裝起來的對象構(gòu)成,對象之間通過消息傳遞實現(xiàn)通信,而事件驅(qū)動正是對消對象之間通過消息傳遞實現(xiàn)通信,而事件驅(qū)動正是對消息傳遞機制的一種實現(xiàn)。所以基于事件驅(qū)動風(fēng)格的系統(tǒng)息傳遞機制的一種實現(xiàn)。所以基于事件

49、驅(qū)動風(fēng)格的系統(tǒng)往往都是面向?qū)ο蟮?。往往都是面向?qū)ο蟮?。v 事件驅(qū)動風(fēng)格實例:事件驅(qū)動風(fēng)格實例:JavaBean系統(tǒng)概述系統(tǒng)概述 事件從事件源到監(jiān)聽者的傳遞是通過對目標(biāo)監(jiān)聽者對象的事件從事件源到監(jiān)聽者的傳遞是通過對目標(biāo)監(jiān)聽者對象的Java方法調(diào)用進行的。方法調(diào)用進行的。 對每個明確的事件的發(fā)生,都相應(yīng)地定義一對每個明確的事件的發(fā)生,都相應(yīng)地定義一個明確的個明確的Java方法。這些方法都集中定義在事件監(jiān)聽者(方法。這些方法都集中定義在事件監(jiān)聽者(EventListener)接口中,這個接口要繼承)接口中,這個接口要繼承java.util.EventListener。v JavaBean系統(tǒng)系統(tǒng)(續(xù)

50、續(xù)) 事件狀態(tài)對象事件狀態(tài)對象 與事件發(fā)生有關(guān)的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中與事件發(fā)生有關(guān)的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中,這種對象是,這種對象是java.util.EventObject的子類。按設(shè)計習(xí)慣,這的子類。按設(shè)計習(xí)慣,這種事件狀態(tài)對象類的名應(yīng)以種事件狀態(tài)對象類的名應(yīng)以Event結(jié)尾。結(jié)尾。v JavaBean系統(tǒng)系統(tǒng)(續(xù)續(xù)) 事件監(jiān)聽者接口(事件監(jiān)聽者接口(EventListener Interface)與事件監(jiān)聽者)與事件監(jiān)聽者 由于由于Java事件模型是基于方法調(diào)用,因而需要一個定義并組織事件模型是基于方法調(diào)用,因而需要一個定義并組織事件操縱方法的方式。事件操

51、縱方法的方式。JavaBean中,事件操縱方法都被定義在中,事件操縱方法都被定義在繼承了繼承了java.util.EventListener類的類的EventListener接口中,按接口中,按規(guī)定,規(guī)定,EventListener接口的命名要以接口的命名要以Listener結(jié)尾。任何一個結(jié)尾。任何一個類如果想操縱在類如果想操縱在EventListener接口中定義的方法都必須以實現(xiàn)接口中定義的方法都必須以實現(xiàn)這個接口方式進行。這個類也就是事件監(jiān)聽者。這個接口方式進行。這個類也就是事件監(jiān)聽者。 v JavaBean系統(tǒng)系統(tǒng)(續(xù)續(xù)) 事件監(jiān)聽者的注冊與注銷事件監(jiān)聽者的注冊與注銷 為了各種可能的事

52、件監(jiān)聽者把自己注冊入合適的事件源中,建為了各種可能的事件監(jiān)聽者把自己注冊入合適的事件源中,建立源與事件監(jiān)聽者間的事件流,事件源必須為事件監(jiān)聽者提供立源與事件監(jiān)聽者間的事件流,事件源必須為事件監(jiān)聽者提供注冊和注銷的方法。在前面的注冊和注銷的方法。在前面的bound屬性介紹中已看到了這種屬性介紹中已看到了這種使用過程,在實際中,事件監(jiān)聽者的注冊和注銷要使用標(biāo)準(zhǔn)的使用過程,在實際中,事件監(jiān)聽者的注冊和注銷要使用標(biāo)準(zhǔn)的設(shè)計格式:設(shè)計格式: public void add( listener) public void remove( listener)v 適配類適配類 適配類是適配類是JavaBean事

53、件模型中極其重要的一部分。在一些應(yīng)用事件模型中極其重要的一部分。在一些應(yīng)用場合,事件從源到監(jiān)聽者之間的傳遞要通過適配類來場合,事件從源到監(jiān)聽者之間的傳遞要通過適配類來“轉(zhuǎn)發(fā)轉(zhuǎn)發(fā)”。 適配類成為了事件監(jiān)聽者,事件源實際是把適配類作為監(jiān)聽者適配類成為了事件監(jiān)聽者,事件源實際是把適配類作為監(jiān)聽者注冊入監(jiān)聽者隊列中,而真正的事件響應(yīng)者并未在監(jiān)聽者隊列注冊入監(jiān)聽者隊列中,而真正的事件響應(yīng)者并未在監(jiān)聽者隊列中,事件響應(yīng)者應(yīng)做的動作由適配類決定。中,事件響應(yīng)者應(yīng)做的動作由適配類決定。 v Turbo Vision Borland公司開發(fā)的公司開發(fā)的Turbo Pascal6.0中提供了一種面向?qū)ο蟮闹刑峁┝?/p>

54、一種面向?qū)ο蟮氖录?qū)動程序設(shè)計的工具包事件驅(qū)動程序設(shè)計的工具包Turbo Vision。Turbo Vision把各把各種屏幕上的可見對象歸納為種屏幕上的可見對象歸納為2大類:一類為執(zhí)行對象,另一類為大類:一類為執(zhí)行對象,另一類為管理對象,分別稱為管理對象,分別稱為TView和和TGroup類對象。又因為類對象。又因為TGroup和和TView類有相同之處,故類有相同之處,故TGroup是從是從TView派生而得,在派生而得,在Turbo Vision中,中,TGroup類的對象一般不進行實際操作,不直類的對象一般不進行實際操作,不直接在屏幕上顯示自己,而是通過自己的下屬顯示自己,所有的接在屏

55、幕上顯示自己,而是通過自己的下屬顯示自己,所有的實際操作都是通過實際操作都是通過TView類對象進行的。類對象進行的。v Turbo Vision 很好地體現(xiàn)了面向?qū)ο蠓椒ê褪录?qū)動程序設(shè)計很好地體現(xiàn)了面向?qū)ο蠓椒ê褪录?qū)動程序設(shè)計方法的精髓,方法的精髓,TApplication是一個可以運行的交互式程序?qū)ο笫且粋€可以運行的交互式程序?qū)ο螅藛雍屯顺鲋?,它不提供任何功能,使用,除了啟動和退出之外,它不提供任何功能,使用Turbo Vision,就能高效和快速地開發(fā)出高質(zhì)量地應(yīng)用程序。,就能高效和快速地開發(fā)出高質(zhì)量地應(yīng)用程序。 Turbo Vision Turbo Vision軟件包中對象

56、的分類結(jié)構(gòu)如圖所示: Turbo Vision中對象的分類結(jié)構(gòu)Turbo Vision Turbo Vision對象的組裝結(jié)構(gòu)一般說來,TApplication對象擁有并管理它創(chuàng)建的3個子對象TMenuBar,TDeskTop和TStatusLine,如圖所示. Turbo Vision的組裝結(jié)構(gòu)TApplicationStatusLineDeskTopMenuBarTBackGroundTurbo Vision 在程序的實際運行中,Application對象通常創(chuàng)建各種TWindow類和Tdialog類對象,并委托DeskTop代為管理.因此,DeskTop對象的組裝常常隨程序的運行而改變.

57、窗口對象(Twindow類)和對話框?qū)ο?Toialog類)隨應(yīng)用的不同而不同,典型的窗口和對話框?qū)ο蟮慕M裝結(jié)構(gòu)如圖所示.窗口和對話框?qū)ο蟮慕M裝結(jié)構(gòu) WindowFrameScrollerVerticalScrollBarHorizontalScrollBarDialogButtonFrameStaticTextv Turbo Vision Turbo Vision把事件抽象為3種類型的事件:位置事件、聚焦事件和廣播事件。典型的位置事件是鼠標(biāo)器事件,TGroup類視圖把位置事件交給管理該區(qū)域的子視圖;典型的聚焦事件是擊鍵和命令事件(典型的命令事件是由狀態(tài)行或菜單條、下拉菜單將擊鍵事件或鼠標(biāo)器事

58、件轉(zhuǎn)換而得),TGroup類視圖把該事件交給處于聚焦?fàn)顟B(tài)的下級視圖;廣播事件是管理視圖不知道該交給誰的那種事件,對于這種事件,它將該事件交給所有的視圖。 Turbo Vision程序在運行時,由TApplication對象收集鼠標(biāo)器事件和健盤事件以及各種其它事件,然后按一定的規(guī)則交給下屬去處理.例如,對于鼠標(biāo)器事件,如果它發(fā)生在菜單條上,則將它交給菜單條來處理;如果它發(fā)生在狀態(tài)行,則將它交給狀態(tài)行來處理;如果它發(fā)生在DeskTop上,則將它交給DeskTop來處理。總之,細(xì)節(jié)問題總是交給下屬來處理.狀態(tài)行和菜單條的任務(wù)是將鍵盤事件和自己轄區(qū)的鼠標(biāo)器事件轉(zhuǎn)換成為命令事件,再上交給TApplica

59、tion。v 特征特征 一個分層系統(tǒng)采用層次化的組織方式構(gòu)建,系統(tǒng)中的每一層都一個分層系統(tǒng)采用層次化的組織方式構(gòu)建,系統(tǒng)中的每一層都要承擔(dān)兩個角色。要承擔(dān)兩個角色。 首先,它要為結(jié)構(gòu)中的上層提供服務(wù); 其次,它要作為結(jié)構(gòu)中下面層次的客戶,調(diào)用下層提供的功能函數(shù)。 v 一個概念上的分層模型如下圖所示:一個概念上的分層模型如下圖所示: 核心層(最底層)功能層(中間層)應(yīng)用層(最高層)v 分層風(fēng)格具有一些系統(tǒng)設(shè)計者無法抗拒的優(yōu)勢:分層風(fēng)格具有一些系統(tǒng)設(shè)計者無法抗拒的優(yōu)勢: 分層風(fēng)格支持系統(tǒng)設(shè)計過程中的逐級抽象分層風(fēng)格支持系統(tǒng)設(shè)計過程中的逐級抽象 基于分層風(fēng)格的系統(tǒng)具有較好的可擴展性基于分層風(fēng)格的系統(tǒng)

60、具有較好的可擴展性 分層風(fēng)格支持軟件復(fù)用分層風(fēng)格支持軟件復(fù)用 v 并不是所有的系統(tǒng)都適合用分層風(fēng)格來描述的并不是所有的系統(tǒng)都適合用分層風(fēng)格來描述的 v 對于抽象出來的功能具體應(yīng)該放在哪個層次上也是設(shè)計對于抽象出來的功能具體應(yīng)該放在哪個層次上也是設(shè)計者頭疼的一個問題者頭疼的一個問題 v 分層風(fēng)格實例:計算機網(wǎng)絡(luò)的設(shè)計分層風(fēng)格實例:計算機網(wǎng)絡(luò)的設(shè)計v 概述概述 網(wǎng)絡(luò)協(xié)議設(shè)計者將計算機網(wǎng)絡(luò)中的各個部分按其功能劃分為若網(wǎng)絡(luò)協(xié)議設(shè)計者將計算機網(wǎng)絡(luò)中的各個部分按其功能劃分為若干個層次(干個層次(Layer),其中的每一個層次都可以看成是一個相對),其中的每一個層次都可以看成是一個相對獨立的黑箱、一個封閉的系統(tǒng)。用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論