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

下載本文檔

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

文檔簡介

1、THU SAGroup課程編號:課程編號:74100152軟件體系結(jié)構(gòu)(軟件體系結(jié)構(gòu)(2 2)軟件體系結(jié)構(gòu)的風格與模式軟件體系結(jié)構(gòu)的風格與模式覃征覃征 教授教授v Christopher Alexander, The Timeless Way of Building, p247, 1979 每個模式是一個由三部分組成的規(guī)則,表達了特定環(huán)境、問題每個模式是一個由三部分組成的規(guī)則,表達了特定環(huán)境、問題和解和解(solution)之間的關(guān)系。之間的關(guān)系。 作為現(xiàn)實世界的一個成分,每個模式表達了下列三者之間的一作為現(xiàn)實世界的一個成分,每個模式表達了下列三者之間的一種關(guān)系:特定環(huán)境,在該環(huán)境中反復(fù)出現(xiàn)的

2、力種關(guān)系:特定環(huán)境,在該環(huán)境中反復(fù)出現(xiàn)的力(forces)的系統(tǒng),的系統(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ī)則。模式既是過程,又是事物;既是活生生的事物的

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

4、方式的規(guī)定;一個或多個語義模型,規(guī)定了如何從各成分的特性決定系定;一個或多個語義模型,規(guī)定了如何從各成分的特性決定系統(tǒng)整體特性統(tǒng)整體特性 概括地說,一種軟件體系結(jié)構(gòu)風格刻劃一個具有共享結(jié)構(gòu)和語概括地說,一種軟件體系結(jié)構(gòu)風格刻劃一個具有共享結(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)風格體系結(jié)構(gòu)風格 模式系統(tǒng)中的詞匯模式系統(tǒng)中的詞匯 目前尚不完善目前尚不完善 每個風格可以視為一組構(gòu)件的集合,以及構(gòu)件

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é)議v 風格分類:風格分類: 1. 1. 管道管道- -過濾器風格過濾器風格 2. 2. 面向?qū)ο箫L格面向?qū)ο箫L格 3. 3. 事件驅(qū)動風格事件驅(qū)動風格 4. 4. 分層風格分層風格 5. 5. 數(shù)據(jù)共享風格數(shù)據(jù)共享風格 6. 6. 解釋器風格解釋器風格 7. 7. 反饋控制環(huán)風格反饋控制環(huán)風格 8. 8. 異構(gòu)風格的集成異構(gòu)風格的集成v 特別注意:體

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

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

8、加任何限制v 結(jié)果的正確性不依賴于各個過濾器運行的先后次序結(jié)果的正確性不依賴于各個過濾器運行的先后次序 各過濾器在輸入具備后完成自己的計算。完整的計算過程包含各過濾器在輸入具備后完成自己的計算。完整的計算過程包含在過濾器之間的拓撲結(jié)構(gòu)中。在過濾器之間的拓撲結(jié)構(gòu)中。管道管道- -過濾器風格過濾器風格v 一個管道一個管道- -過濾器風格的示意圖如下圖所示:過濾器風格的示意圖如下圖所示:FiltersPipes管道管道- -過濾器風格過濾器風格v 一個采用了嵌套的管道過濾器的系統(tǒng)示例:一個采用了嵌套的管道過濾器的系統(tǒng)示例:v Unix系統(tǒng)中的管道過濾器結(jié)構(gòu)系統(tǒng)中的管道過濾器結(jié)構(gòu) ls al | gr

9、ep myv DOS 中的管道命令中的管道命令 DOS允許在命令中出現(xiàn)用豎線字符允許在命令中出現(xiàn)用豎線字符“|”分開的多個命令,將符分開的多個命令,將符號號“|”之前的命令的輸出,作為之前的命令的輸出,作為“|”之后命令的輸入,這就是之后命令的輸入,這就是“管道功能管道功能”,豎線字符,豎線字符“|”是管道操作符。是管道操作符。 例如,命令例如,命令dir | more使得當前目錄列表在屏幕上逐屏顯示。使得當前目錄列表在屏幕上逐屏顯示。dir的輸出是整個目錄列表,它不出現(xiàn)在屏幕上而是由于符號的輸出是整個目錄列表,它不出現(xiàn)在屏幕上而是由于符號“|”的規(guī)定,成為下一個命令的規(guī)定,成為下一個命令mo

10、re的輸入,的輸入,more命令則將其輸命令則將其輸入,入,more命令則將其輸入一屏一屏地顯示,成為命令行的輸出命令則將其輸入一屏一屏地顯示,成為命令行的輸出。THU SAGroup12THU SAGroup13v dir | more v 通訊協(xié)議的信息封裝通訊協(xié)議的信息封裝(e.g. SDH)v 設(shè)計者可以將整個系統(tǒng)的輸入、輸出特性簡單的理解為設(shè)計者可以將整個系統(tǒng)的輸入、輸出特性簡單的理解為各個過濾器功能的合成。各個過濾器功能的合成。 設(shè)計人員將整個系統(tǒng)的輸入輸出行為理解為單個過濾器行為的設(shè)計人員將整個系統(tǒng)的輸入輸出行為理解為單個過濾器行為的疊加與組合。這樣可以將問題分解,化繁為簡。將系

11、統(tǒng)抽象成疊加與組合。這樣可以將問題分解,化繁為簡。將系統(tǒng)抽象成一個一個“黑箱黑箱”,其輸入是系統(tǒng)中第一個過濾器的輸入管道,輸,其輸入是系統(tǒng)中第一個過濾器的輸入管道,輸出是系統(tǒng)中最后一個過濾器的輸出管道,而其內(nèi)部各功能模塊出是系統(tǒng)中最后一個過濾器的輸出管道,而其內(nèi)部各功能模塊的具體實現(xiàn)對用戶完全透明。的具體實現(xiàn)對用戶完全透明。 v 管道管道-過濾器風格支持功能模塊的復(fù)用過濾器風格支持功能模塊的復(fù)用 任何兩個過濾器,只要它們之間傳送的數(shù)據(jù)遵守共同的規(guī)約,任何兩個過濾器,只要它們之間傳送的數(shù)據(jù)遵守共同的規(guī)約,就可以相連接。每個過濾器都有自己獨立的輸入輸出接口,如就可以相連接。每個過濾器都有自己獨立的

12、輸入輸出接口,如果過濾器間傳輸?shù)臄?shù)據(jù)遵守其規(guī)約,只要用管道將它們連接就果過濾器間傳輸?shù)臄?shù)據(jù)遵守其規(guī)約,只要用管道將它們連接就可以正常工作。可以正常工作。 v 基于管道基于管道-過濾器風格的系統(tǒng)具有較強的可維護性和可擴過濾器風格的系統(tǒng)具有較強的可維護性和可擴展性。展性。 舊的過濾器可以被替代,新的過濾器可以添加到已有的系統(tǒng)上舊的過濾器可以被替代,新的過濾器可以添加到已有的系統(tǒng)上。軟件的易于維護和升級是衡量軟件系統(tǒng)質(zhì)量的重要指標之一。軟件的易于維護和升級是衡量軟件系統(tǒng)質(zhì)量的重要指標之一,在管道,在管道-過濾器模型中,只要遵守輸入輸出數(shù)據(jù)規(guī)約,任何一過濾器模型中,只要遵守輸入輸出數(shù)據(jù)規(guī)約,任何一個過

13、濾器都可以被另一個新的過濾器代替,同時為增強程序功個過濾器都可以被另一個新的過濾器代替,同時為增強程序功能,可以添加新的過濾器。這樣,系統(tǒng)的可維護性和可升級性能,可以添加新的過濾器。這樣,系統(tǒng)的可維護性和可升級性得到了保證。得到了保證。 v 支持一些特定的分析,如吞吐量計算和死鎖檢測等。支持一些特定的分析,如吞吐量計算和死鎖檢測等。 利用管道利用管道-過濾器風格的視圖,可以很容易的得到系統(tǒng)的資源使過濾器風格的視圖,可以很容易的得到系統(tǒng)的資源使用和請求的狀態(tài)圖。然后,根據(jù)操作系統(tǒng)原理等相關(guān)理論中的用和請求的狀態(tài)圖。然后,根據(jù)操作系統(tǒng)原理等相關(guān)理論中的死鎖檢測方法就可以分析出系統(tǒng)目前所處的狀態(tài),是

14、否存在死死鎖檢測方法就可以分析出系統(tǒng)目前所處的狀態(tài),是否存在死鎖可能及如何消除死鎖等問題。鎖可能及如何消除死鎖等問題。 v 管道管道-過濾器風格具有并發(fā)性過濾器風格具有并發(fā)性 每個過濾器作為一個單獨的執(zhí)行任務(wù),可以與其它過濾器并發(fā)每個過濾器作為一個單獨的執(zhí)行任務(wù),可以與其它過濾器并發(fā)執(zhí)行。過濾器的執(zhí)行是獨立的,不依賴于其它過濾器的。在實執(zhí)行。過濾器的執(zhí)行是獨立的,不依賴于其它過濾器的。在實際運行時,可以將存在并發(fā)可能的多個過濾器看作多個并發(fā)的際運行時,可以將存在并發(fā)可能的多個過濾器看作多個并發(fā)的任務(wù)并行執(zhí)行,從而大大提高系統(tǒng)的整體效率,加快處理速度任務(wù)并行執(zhí)行,從而大大提高系統(tǒng)的整體效率,加快

15、處理速度。 v 交互式處理能力弱交互式處理能力弱 管道管道-過濾器模型適于數(shù)據(jù)流的處理和變換,不適合為與用戶交過濾器模型適于數(shù)據(jù)流的處理和變換,不適合為與用戶交互頻繁的系統(tǒng)建模。在這種模型中,每個過濾器都有自己的數(shù)互頻繁的系統(tǒng)建模。在這種模型中,每個過濾器都有自己的數(shù)據(jù),這些數(shù)據(jù)或者是從磁盤存儲器中讀取來,或者是由另一個據(jù),這些數(shù)據(jù)或者是從磁盤存儲器中讀取來,或者是由另一個過濾器的輸出導(dǎo)入進來,整個系統(tǒng)沒有一個共享的數(shù)據(jù)區(qū)。這過濾器的輸出導(dǎo)入進來,整個系統(tǒng)沒有一個共享的數(shù)據(jù)區(qū)。這樣,當用戶要操作某一項數(shù)據(jù)時,要涉及到多個過濾器對相應(yīng)樣,當用戶要操作某一項數(shù)據(jù)時,要涉及到多個過濾器對相應(yīng)數(shù)據(jù)的操

16、作,其實現(xiàn)較為復(fù)雜。由以上的缺點,可以對每個過數(shù)據(jù)的操作,其實現(xiàn)較為復(fù)雜。由以上的缺點,可以對每個過濾器增加相應(yīng)的用戶控制接口,使得外部可以對過濾器的執(zhí)行濾器增加相應(yīng)的用戶控制接口,使得外部可以對過濾器的執(zhí)行進行控制。進行控制。 改進的過濾器改進的過濾器v 管道管道-過濾器風格往往導(dǎo)致系統(tǒ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ù)流之間的同步問題等

17、。v 根據(jù)實際設(shè)計的需要,設(shè)計者也需要對數(shù)據(jù)傳輸進行特根據(jù)實際設(shè)計的需要,設(shè)計者也需要對數(shù)據(jù)傳輸進行特定的處理(如為了防止數(shù)據(jù)泄漏而采取加密等手段),定的處理(如為了防止數(shù)據(jù)泄漏而采取加密等手段),導(dǎo)致過濾器必須對輸入、輸出管道中的數(shù)據(jù)流進行解析導(dǎo)致過濾器必須對輸入、輸出管道中的數(shù)據(jù)流進行解析或反解析,增加了過濾器具體實現(xiàn)的復(fù)雜性。或反解析,增加了過濾器具體實現(xiàn)的復(fù)雜性。v 通信的目的是傳遞消息。消息具有不同的形式,例如:通信的目的是傳遞消息。消息具有不同的形式,例如:符號、文字、語音、音樂、數(shù)據(jù)、圖片、圖像等等。因符號、文字、語音、音樂、數(shù)據(jù)、圖片、圖像等等。因而,根據(jù)所傳遞消息的不同,目前

18、通信業(yè)務(wù)可以分為電而,根據(jù)所傳遞消息的不同,目前通信業(yè)務(wù)可以分為電報、電話、傳真、數(shù)據(jù)傳輸及可視電話等。對于基本的報、電話、傳真、數(shù)據(jù)傳輸及可視電話等。對于基本的點對點通信,是把發(fā)送端的消息傳遞到接收端。點對點通信,是把發(fā)送端的消息傳遞到接收端。 數(shù)字通信概念模型發(fā)送端接收端v 將上圖發(fā)送端進一步細分為信息源和發(fā)送設(shè)備,將接收將上圖發(fā)送端進一步細分為信息源和發(fā)送設(shè)備,將接收端細分為接收設(shè)備和受信者;同時,在通信過程中會有端細分為接收設(shè)備和受信者;同時,在通信過程中會有噪聲干擾,在模型中添加噪聲源可得到圖所示的數(shù)字通噪聲干擾,在模型中添加噪聲源可得到圖所示的數(shù)字通信系統(tǒng)粗略模型。信系統(tǒng)粗略模型。

19、數(shù)字通信系統(tǒng)粗略模型信息源發(fā)送設(shè)備接收設(shè)備受信者噪聲源信道信道v 圖中各單元作用:圖中各單元作用: 信息源把各種可能信息轉(zhuǎn)換成原始電信號;信息源把各種可能信息轉(zhuǎn)換成原始電信號; 發(fā)送設(shè)備對原始電信號完成某種變化,便于原始信號在信道中發(fā)送設(shè)備對原始電信號完成某種變化,便于原始信號在信道中傳輸,然后再送入信道;傳輸,然后再送入信道; 信道是指信號傳輸?shù)耐ǖ?,它既可以看成是管道(因為它的目信道是指信號傳輸?shù)耐ǖ溃瓤梢钥闯墒枪艿溃ㄒ驗樗哪康牟⒉皇菫榱藢崿F(xiàn)某種功能,僅僅是為了信號的傳輸),也可的并不是為了實現(xiàn)某種功能,僅僅是為了信號的傳輸),也可以從某種意義上看做是過濾以從某種意義上看做是過濾 器

20、(因為信號經(jīng)過信道后會產(chǎn)生器(因為信號經(jīng)過信道后會產(chǎn)生一些變化,比如加入噪聲的影響,從而改變一些變化,比如加入噪聲的影響,從而改變 了發(fā)送設(shè)備發(fā)出的了發(fā)送設(shè)備發(fā)出的信號)。信號)。 接收設(shè)備從接收信號中恢復(fù)出相應(yīng)的原始信號;接收設(shè)備從接收信號中恢復(fù)出相應(yīng)的原始信號; 受信者(也稱為信息宿或接收終端)是將復(fù)原的原始信號轉(zhuǎn)換受信者(也稱為信息宿或接收終端)是將復(fù)原的原始信號轉(zhuǎn)換成相應(yīng)的消息。成相應(yīng)的消息。 噪聲源是信道中的噪聲以及分散在通信系統(tǒng)其它各處的噪聲的噪聲源是信道中的噪聲以及分散在通信系統(tǒng)其它各處的噪聲的集中體現(xiàn),它使原信號受到了干擾,產(chǎn)生畸變。集中體現(xiàn),它使原信號受到了干擾,產(chǎn)生畸變。

21、v 在數(shù)字通信中存在以下幾個突出的問題:在數(shù)字通信中存在以下幾個突出的問題: 數(shù)字信號傳輸時,信道噪聲或干擾所造成的差錯,原則上都可數(shù)字信號傳輸時,信道噪聲或干擾所造成的差錯,原則上都可以通過差錯控制編碼等手段來控制。為此,在發(fā)送端需要增加以通過差錯控制編碼等手段來控制。為此,在發(fā)送端需要增加一個編碼器,而在接收一個編碼器,而在接收 端相應(yīng)的需要一個解碼器。端相應(yīng)的需要一個解碼器。 當需要保密時,可以有效的對基帶信號進行加密,防止信息被當需要保密時,可以有效的對基帶信號進行加密,防止信息被竊取或通信竊取或通信 被破壞。此時,在接收端就需要進行解密。被破壞。此時,在接收端就需要進行解密。 由于數(shù)

22、字通信傳輸?shù)氖且粋€接一個按節(jié)拍傳送的數(shù)字信號單元由于數(shù)字通信傳輸?shù)氖且粋€接一個按節(jié)拍傳送的數(shù)字信號單元,即碼元,因而接收端必須與發(fā)送端按相同的節(jié)拍進行接收。,即碼元,因而接收端必須與發(fā)送端按相同的節(jié)拍進行接收。不然,會因接收節(jié)拍不一致而造成混亂,使接收倒的數(shù)據(jù)全部不然,會因接收節(jié)拍不一致而造成混亂,使接收倒的數(shù)據(jù)全部無效。因此,數(shù)字通信系統(tǒng)中必須有同步控制構(gòu)件。無效。因此,數(shù)字通信系統(tǒng)中必須有同步控制構(gòu)件。v 針對上述問題,可得到數(shù)字通信系統(tǒng)詳細模型(下圖)針對上述問題,可得到數(shù)字通信系統(tǒng)詳細模型(下圖) 數(shù)字通信系統(tǒng)詳細模型v Data Source (數(shù)據(jù)源)(數(shù)據(jù)源) input dat

23、a 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 , between the last filter and the data sink

24、 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 管道管道-過濾器模式的體系結(jié)構(gòu)是面向數(shù)據(jù)流的軟件體系結(jié)過濾器模式的體系結(jié)構(gòu)是面向數(shù)據(jù)流的軟件體系結(jié)構(gòu)。它最典型

25、的應(yīng)用是在編譯系統(tǒng)。一個普通的編譯系構(gòu)。它最典型的應(yīng)用是在編譯系統(tǒng)。一個普通的編譯系統(tǒng)包括詞法分析器,語法分析器,語義分析與中間代碼統(tǒng)包括詞法分析器,語法分析器,語義分析與中間代碼生成器,優(yōu)化器,目標代碼生成器等一系列對源程序進生成器,優(yōu)化器,目標代碼生成器等一系列對源程序進行處理的過程。人們可以將編譯系統(tǒng)看作一系列過濾器行處理的過程。人們可以將編譯系統(tǒng)看作一系列過濾器的連接體,按照管道的連接體,按照管道&過濾器的體系結(jié)構(gòu)進行設(shè)計。過濾器的體系結(jié)構(gòu)進行設(shè)計。v 需求描述:假設(shè)有一批實時的二維坐標點數(shù)據(jù)需要變換需求描述:假設(shè)有一批實時的二維坐標點數(shù)據(jù)需要變換(即對點的橫、縱坐標進行縮放),并在屏

26、幕上進行顯(即對點的橫、縱坐標進行縮放),并在屏幕上進行顯示,要求外部要能設(shè)置變換規(guī)則(如縮放倍數(shù))和顯示示,要求外部要能設(shè)置變換規(guī)則(如縮放倍數(shù))和顯示規(guī)則(如顯示模式和顯示顏色)。規(guī)則(如顯示模式和顯示顏色)。v 體系結(jié)構(gòu)建模體系結(jié)構(gòu)建模 這是一個對坐標點的數(shù)據(jù)流進行順序處理的過程,可以應(yīng)用管這是一個對坐標點的數(shù)據(jù)流進行順序處理的過程,可以應(yīng)用管道道-過濾器體系結(jié)構(gòu)建模。將這個系統(tǒng)分為兩個過濾器,一個為過濾器體系結(jié)構(gòu)建模。將這個系統(tǒng)分為兩個過濾器,一個為坐標點數(shù)據(jù)流變換過濾器,另一個為坐標點數(shù)據(jù)流實時顯示過坐標點數(shù)據(jù)流變換過濾器,另一個為坐標點數(shù)據(jù)流實時顯示過濾器。其中,坐標點數(shù)據(jù)流變換過

27、濾器有一個外部控制接口對濾器。其中,坐標點數(shù)據(jù)流變換過濾器有一個外部控制接口對變換規(guī)則如縮放倍數(shù)進行設(shè)置,坐標點數(shù)據(jù)流實時顯示過濾器變換規(guī)則如縮放倍數(shù)進行設(shè)置,坐標點數(shù)據(jù)流實時顯示過濾器有一個外部控制接口對顯示規(guī)則如顯示模式和顯示顏色進行設(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):停止狀可以將過濾器用狀態(tài)轉(zhuǎn)換圖表示。過濾器有如下狀態(tài):停止狀態(tài),工作狀態(tài),等待狀態(tài),休眠狀態(tài)。態(tài),工作狀態(tài),等待狀態(tài),休眠狀態(tài)。 停止狀態(tài):表示過

28、濾器處于待啟動狀態(tài),當外部啟動過濾器后停止狀態(tài):表示過濾器處于待啟動狀態(tài),當外部啟動過濾器后,過濾器處于處理狀態(tài);,過濾器處于處理狀態(tài); 處理狀態(tài):表示過濾器正在處理輸入數(shù)據(jù)隊列中的數(shù)據(jù);處理狀態(tài):表示過濾器正在處理輸入數(shù)據(jù)隊列中的數(shù)據(jù); 等待狀態(tài):表示過濾器的輸入數(shù)據(jù)隊列為空,此時過濾器等待等待狀態(tài):表示過濾器的輸入數(shù)據(jù)隊列為空,此時過濾器等待,當有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài);,當有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài); 休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能是由于外界用戶要設(shè)置過濾器的控制參數(shù),這樣暫時將過濾器是由

29、于外界用戶要設(shè)置過濾器的控制參數(shù),這樣暫時將過濾器掛起但不中止它,當控制參數(shù)設(shè)置完畢后再將過濾器還原,繼掛起但不中止它,當控制參數(shù)設(shè)置完畢后再將過濾器還原,繼續(xù)運行。這樣,實現(xiàn)了較高的效率。續(xù)運行。這樣,實現(xiàn)了較高的效率。過濾器狀態(tài)轉(zhuǎn)換圖 v 過濾器的作用:對輸入數(shù)據(jù)的處理過濾器的作用:對輸入數(shù)據(jù)的處理 enriches : computing and adding info refines : concentrating or extracting info transforms : delivering data into some other representation v 被動式過濾

30、器(被動式過濾器(PassivePassive 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 separa

31、te program or threadv 類型類型 pipelines linear sequences of filters bounded pipes limited amount of data on a pipe typed pipes data strongly typed batch sequential data streams are not incrementalv Maurice J. Bach. The Design of the UNIX Operating System, chap. 5, pp. 11-119. Software Series. Prentice

32、Hall, 1986v Norman Delisle and David Garlan. Applying formal specification to industrial problems: A specification of an oscilloscope. IEEE Software, 7(5):29-37, Sept. 1990v J. C. Browne, M. Azam, and S. Sobek. Code: A unified approach to parallel programming. IEEE Software, July 1989.v G. Kahn. The

33、 semantics of a simple language for parallel programming. Information Processing, 1974v David Barstow and Alex Wolf. Design methods and software architectures track. In Proceedings of the 7th International Workshop in Software Specification and Design. IEEE Press, 1993THU SAGroup36v 概述概述 面相對象模式集數(shù)據(jù)抽象

34、、抽象數(shù)據(jù)類型、類繼承為一體,使面相對象模式集數(shù)據(jù)抽象、抽象數(shù)據(jù)類型、類繼承為一體,使軟件工程公認的模塊化、信息隱藏、抽象、重用性等原則在面軟件工程公認的模塊化、信息隱藏、抽象、重用性等原則在面向?qū)ο箫L格下得以充分實現(xiàn)。向?qū)ο箫L格下得以充分實現(xiàn)。 v 應(yīng)用場合應(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ū)動風格的系統(tǒng)也常常應(yīng)用了面向?qū)ο箫L格。大多數(shù)應(yīng)用事件驅(qū)動風格的系統(tǒng)也常常應(yīng)用了面向?qū)ο箫L格Log

35、 in FormUser LabelPass LabelUser TextPass TextCancel ButtonLog in ButtonOption GroupPublic OptionPrivate Optionv 面向?qū)ο箫L格系統(tǒng)設(shè)計時有下述幾條基本原則面向?qū)ο箫L格系統(tǒng)設(shè)計時有下述幾條基本原則 將邏輯上的實體映射為對象,實體之間的關(guān)系映射為對象之間將邏輯上的實體映射為對象,實體之間的關(guān)系映射為對象之間的應(yīng)用關(guān)系。的應(yīng)用關(guān)系。 對象利用應(yīng)用關(guān)系來訪問對方公開的接口,完成某個特定任務(wù)對象利用應(yīng)用關(guān)系來訪問對方公開的接口,完成某個特定任務(wù);一組對象之間相互協(xié)作,完成總體目標。;一組對象之

36、間相互協(xié)作,完成總體目標。THU SAGroup38面向?qū)ο箫L格的抽象描述 一個銀行系統(tǒng)對象之間的協(xié)作實例v 高度模塊性高度模塊性 數(shù)據(jù)與其相關(guān)操作被組織為對象,數(shù)據(jù)與其相關(guān)操作被組織為對象, 成為模塊組織的基本單位成為模塊組織的基本單位v 封裝功能封裝功能 一組功能和其實現(xiàn)細節(jié)被封裝在一個對象中,具有功能的接口一組功能和其實現(xiàn)細節(jié)被封裝在一個對象中,具有功能的接口被暴露出來被暴露出來v 代碼共享代碼共享 對象的相對獨立性可被反復(fù)重用,通過拼裝形成不同的軟件系對象的相對獨立性可被反復(fù)重用,通過拼裝形成不同的軟件系統(tǒng)統(tǒng)v 靈活性靈活性 對象在組織過程中,相互關(guān)系可以任意變化,只要接口兼容對象在組

37、織過程中,相互關(guān)系可以任意變化,只要接口兼容v 易維護性易維護性 對象接近于人對問題和解決方案模型的思維方式,易于理解和對象接近于人對問題和解決方案模型的思維方式,易于理解和修改修改 系統(tǒng)功能結(jié)構(gòu) v 系統(tǒng)功能介紹:系統(tǒng)功能介紹: 檔案管理根據(jù)高校人事檔案管理的特點,本模塊可通過錄入各檔案管理根據(jù)高校人事檔案管理的特點,本模塊可通過錄入各類人事檔案信息,來構(gòu)造檔案數(shù)據(jù)庫,編制各種目錄索檢。針類人事檔案信息,來構(gòu)造檔案數(shù)據(jù)庫,編制各種目錄索檢。針對檔案材料錄入工作量較大,在該功能模塊中設(shè)置了多種方式對檔案材料錄入工作量較大,在該功能模塊中設(shè)置了多種方式快速錄入法,如對指定的部分內(nèi)容可采用代碼錄入

38、和菜單選項快速錄入法,如對指定的部分內(nèi)容可采用代碼錄入和菜單選項等輸入方法等輸入方法. 信息檢索該模塊主要是檢索有關(guān)的人事檔案信息,其檢索方式信息檢索該模塊主要是檢索有關(guān)的人事檔案信息,其檢索方式為姓氏筆畫檢索目錄。在具體檢索中又可分為精確查詢和模糊為姓氏筆畫檢索目錄。在具體檢索中又可分為精確查詢和模糊查詢,并可將檢索內(nèi)容動態(tài)輸出,滿足檔案查詢的需要。查詢,并可將檢索內(nèi)容動態(tài)輸出,滿足檔案查詢的需要。 檔案借閱該模塊主要是對檔案的借閱情況、歸還情況、利用登檔案借閱該模塊主要是對檔案的借閱情況、歸還情況、利用登記等方面進行管理。它能為研究如何更有效地利用人事檔案資記等方面進行管理。它能為研究如何

39、更有效地利用人事檔案資料提供必要的信息。料提供必要的信息。 檔案轉(zhuǎn)遞該模塊包括人事檔案的轉(zhuǎn)進和轉(zhuǎn)出管理,編制清單,檔案轉(zhuǎn)遞該模塊包括人事檔案的轉(zhuǎn)進和轉(zhuǎn)出管理,編制清單,并能在檔案轉(zhuǎn)遞后,對已變更檔案數(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ù)管理人員對報表表打印。其中

40、,在報表生成中,該模塊可根據(jù)管理人員對報表的自定義設(shè)置來生成相應(yīng)的非范式報表。的自定義設(shè)置來生成相應(yīng)的非范式報表。 系統(tǒng)維護由于高校人事檔案的數(shù)據(jù)管理是一項非常重要的工作系統(tǒng)維護由于高校人事檔案的數(shù)據(jù)管理是一項非常重要的工作,尤其是它的安全可靠性。因此,在進入本模塊操作之前,系,尤其是它的安全可靠性。因此,在進入本模塊操作之前,系統(tǒng)會提醒用戶輸入姓名、操作口令和權(quán)限級別。同時該功能模統(tǒng)會提醒用戶輸入姓名、操作口令和權(quán)限級別。同時該功能模塊還包括操作員管理、口令修改、重新登錄、權(quán)限級別設(shè)置、塊還包括操作員管理、口令修改、重新登錄、權(quán)限級別設(shè)置、系統(tǒng)日志及系統(tǒng)初始化六個子模塊。系統(tǒng)日志及系統(tǒng)初始化

41、六個子模塊。 系統(tǒng)幫助本模塊提供了在線聯(lián)機幫助,可實現(xiàn)幫助主題的查詢系統(tǒng)幫助本模塊提供了在線聯(lián)機幫助,可實現(xiàn)幫助主題的查詢,還提供了計算器、日記,還提供了計算器、日記/日歷等系統(tǒng)工具和關(guān)于本系統(tǒng)的簡介日歷等系統(tǒng)工具和關(guān)于本系統(tǒng)的簡介。 系統(tǒng)活動圖 系統(tǒng)類結(jié)構(gòu)圖 v ODS系統(tǒng)中構(gòu)件、連接器和配置的模型系統(tǒng)中構(gòu)件、連接器和配置的模型,如下圖所示:如下圖所示:面向?qū)ο箫L格面向?qū)ο箫L格面向?qū)ο箫L格面向?qū)ο箫L格接口非功能屬性進化約束語義類型 構(gòu)件連接器接口類型語義約束進化易理解性進化性可擴充性異構(gòu)性細化性復(fù)合性配置v 構(gòu)件的描述方法構(gòu)件的描述方法:利用利用GUI體系結(jié)構(gòu)框架自動生成工具,體系結(jié)構(gòu)框架自

42、動生成工具,可以完成下述幾點功能:可以完成下述幾點功能: 生成構(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ū)В?多視圖模式,對不同層次的用戶顯示不同的內(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)。THU SA

43、Group48GUI體系結(jié)構(gòu)框架自動生成工具,體系結(jié)構(gòu)框架自動生成工具,ArchStudioTHU SAGroup49GUI體系結(jié)構(gòu)框架自動生成工具,體系結(jié)構(gòu)框架自動生成工具,IBM Rational XDEv 具有自適應(yīng)穩(wěn)定性的連接器模型具有自適應(yīng)穩(wěn)定性的連接器模型v 連接器中的通信協(xié)議棧連接器中的通信協(xié)議棧面向?qū)ο箫L格面向?qū)ο箫L格面向?qū)ο箫L格面向?qū)ο箫L格構(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)的錯誤。 面向?qū)ο箫L格最大的不足在于如果一個對象

44、需要調(diào)用另面向?qū)ο箫L格最大的不足在于如果一個對象需要調(diào)用另一個對象,它就必須知道那個對象的標識(對象名或?qū)σ粋€對象,它就必須知道那個對象的標識(對象名或?qū)ο笠茫?,這樣就無形之中增強了對象之間的依賴關(guān)系象引用),這樣就無形之中增強了對象之間的依賴關(guān)系。如果一個對象改變了自己的標識,就必須通知系統(tǒng)中。如果一個對象改變了自己的標識,就必須通知系統(tǒng)中所有和它有調(diào)用關(guān)系的對象,否則系統(tǒng)就無法正常運行所有和它有調(diào)用關(guān)系的對象,否則系統(tǒng)就無法正常運行。?v 特征特征 事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件的處理表征出來。事件的處理表

45、征出來。 如圖示:如圖示:事件接收器事件處理器輸入反饋輸出v 事件驅(qū)動系統(tǒng)具有以下一些特點:事件驅(qū)動系統(tǒng)具有以下一些特點: 系統(tǒng)是由若干子系統(tǒng)或元素所組成的一個整體;系統(tǒng)是由若干子系統(tǒng)或元素所組成的一個整體; 系統(tǒng)有一定的目標,各子系統(tǒng)在某一種消息機制的控制下,為系統(tǒng)有一定的目標,各子系統(tǒng)在某一種消息機制的控制下,為了這個目標而協(xié)調(diào)行動;了這個目標而協(xié)調(diào)行動; 在某一種消息機制的控制下,系統(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)中,必定有一

46、個子系統(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 下圖是一個基于事件驅(qū)動的軟件系統(tǒng)的示意圖:下圖是一個基于事件驅(qū)動的軟件系統(tǒng)的示意圖:AHFECDBIv 事件驅(qū)動風格系統(tǒng)設(shè)計時有下述幾條基本原則事件驅(qū)動風格系統(tǒng)設(shè)計時有下述幾條基本原則 從系統(tǒng)論的角度來看待描述的對象,合理分解子系統(tǒng),保證各從系統(tǒng)論的角

47、度來看待描述的對象,合理分解子系統(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)。 為了達到系統(tǒng)的目標,系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)為了達到系統(tǒng)的目標,系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié)同操作。行消息來協(xié)同操作。 為了達到系統(tǒng)的目標,系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)為了達到系統(tǒng)的目標,系統(tǒng)內(nèi)的各個子系統(tǒng)通過傳遞消息和執(zhí)行消息來協(xié)同操作。行消息來協(xié)同

48、操作。 v 事件驅(qū)動風格系統(tǒng)設(shè)計時有下述幾條基本原則事件驅(qū)動風格系統(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í)行具體操作,它的主要功能是按照自己的職能指揮下級完成任務(wù),功能性操作一般由執(zhí)行類型的自己的職能指揮下級完成任務(wù),功能性操作一般由執(zhí)行類型的子系統(tǒng)完成。子系統(tǒng)完成。 在一般情況下,除最高級管理子系統(tǒng)外,子系統(tǒng)一般是在一般情況下,除最高級管理

49、子系統(tǒng)外,子系統(tǒng)一般是“有問有問才答才答”,即使在必要的情況下需要積極尋找事件時,也必須征,即使在必要的情況下需要積極尋找事件時,也必須征得上級系統(tǒng)得許可,保證了系統(tǒng)的控制流不會分散。得上級系統(tǒng)得許可,保證了系統(tǒng)的控制流不會分散。 事件驅(qū)動系統(tǒng)具有某種意義上的遞歸性,形成了事件驅(qū)動系統(tǒng)具有某種意義上的遞歸性,形成了“部分部分整體整體”的層次結(jié)構(gòu),可以用屬性結(jié)構(gòu)加以表示。一個的層次結(jié)構(gòu),可以用屬性結(jié)構(gòu)加以表示。一個簡單的表示方法是為執(zhí)行系統(tǒng)定義一些類,另外定義一簡單的表示方法是為執(zhí)行系統(tǒng)定義一些類,另外定義一些類作為這些執(zhí)行系統(tǒng)的容器類,也就是管理系統(tǒng)。些類作為這些執(zhí)行系統(tǒng)的容器類,也就是管理系

50、統(tǒng)。v 事件驅(qū)動風格的基本結(jié)構(gòu),如下圖事件驅(qū)動風格的基本結(jié)構(gòu),如下圖:v Java中的中的button實現(xiàn)實現(xiàn)THU SAGroup60private void initialize() /窗口初始化代碼窗口初始化代碼/btnPress就是這次點擊操作中的事件源就是這次點擊操作中的事件源Buttton btnPress = new JButton();/向事件源向事件源btnPress植入偵聽器對象植入偵聽器對象ButtonEventHandlerbtnPress.addActionListener (new ButtonEventHandler(this); class ButtonEven

51、tHandler implements ActionListener /窗體對象窗體對象 private EventDemo form = null; /通過構(gòu)造體傳入窗體對象,通過構(gòu)造體傳入窗體對象, /作用在于讓偵聽器對象明白事件源處于作用在于讓偵聽器對象明白事件源處于 /哪個窗體容器中哪個窗體容器中 public ButtonEventHandler(EventDemo form) THU SAGroup61 this.form = form; /委托方法委托方法 public void actionPerformed(ActionEvent e) /該方法將會把事件的處理權(quán)交給窗體容器

52、類的該方法將會把事件的處理權(quán)交給窗體容器類的btnPress_Click方法處理。方法處理。 this.form.btnPress_Click(e); /真正的事件處理代碼片斷:真正的事件處理代碼片斷: private void btnPress_Click(ActionEvent e) String message = 你點擊的按鈕名叫你點擊的按鈕名叫: + (JButton) e.getSource().getName(); this.txtMessage.setText(message); THU SAGroup62v 事件驅(qū)動風格非常適合于描述系統(tǒng)族,在屬于同一族的事件驅(qū)動風格非常適合

53、于描述系統(tǒng)族,在屬于同一族的任何系統(tǒng)中,系統(tǒng)的高級管理子系統(tǒng)的描述是完全類似任何系統(tǒng)中,系統(tǒng)的高級管理子系統(tǒng)的描述是完全類似的,便于重用;的,便于重用; v 由于最高管理子系統(tǒng)牢牢的掌握著控制權(quán),又因為各同由于最高管理子系統(tǒng)牢牢的掌握著控制權(quán),又因為各同級子系統(tǒng)一般不直接發(fā)生關(guān)系,因此容易實現(xiàn)并發(fā)處理級子系統(tǒng)一般不直接發(fā)生關(guān)系,因此容易實現(xiàn)并發(fā)處理和多任務(wù)操作;和多任務(wù)操作;v 基于事件驅(qū)動風格的系統(tǒng)具有良好的可擴展性,設(shè)計者基于事件驅(qū)動風格的系統(tǒng)具有良好的可擴展性,設(shè)計者只需為某個對象注冊一個事件處理接口就可以將該對象只需為某個對象注冊一個事件處理接口就可以將該對象引入整個系統(tǒng),同時并不影響

54、其它的系統(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è)計更具有一般化。使整個系統(tǒng)的設(shè)計更具有一般化。v 事件驅(qū)動風格最大的不足在于構(gòu)件削弱了自身對系統(tǒng)計事件驅(qū)動風格最大的不足在于構(gòu)件削弱了自身對系統(tǒng)計算的控制能力算的控制能力 v 事件驅(qū)動風格中存在的另一個問題在于數(shù)據(jù)共享事件驅(qū)動風格中存在的另一個問題在于數(shù)據(jù)共享 v 系統(tǒng)中各個對象的邏輯關(guān)系變得更加復(fù)雜系統(tǒng)中各個對象的邏輯關(guān)系變得更加復(fù)雜 v 基于面向?qū)ο箫L格的系統(tǒng)由多個封裝起來的對象構(gòu)成,基

55、于面向?qū)ο箫L格的系統(tǒng)由多個封裝起來的對象構(gòu)成,對象之間通過消息傳遞實現(xiàn)通信,而事件驅(qū)動正是對消對象之間通過消息傳遞實現(xiàn)通信,而事件驅(qū)動正是對消息傳遞機制的一種實現(xiàn)。所以基于事件驅(qū)動風格的系統(tǒng)息傳遞機制的一種實現(xiàn)。所以基于事件驅(qū)動風格的系統(tǒng)往往都是面向?qū)ο蟮摹M际敲嫦驅(qū)ο蟮?。v 事件驅(qū)動風格實例:事件驅(qū)動風格實例:JavaBean系統(tǒng)概述系統(tǒng)概述 事件從事件源到監(jiān)聽者的傳遞是通過對目標監(jiān)聽者對象的事件從事件源到監(jiān)聽者的傳遞是通過對目標監(jiān)聽者對象的Java方法調(diào)用進行的。方法調(diào)用進行的。 對每個明確的事件的發(fā)生,都相應(yīng)地定義一對每個明確的事件的發(fā)生,都相應(yīng)地定義一個明確的個明確的Java方法。

56、這些方法都集中定義在事件監(jiān)聽者(方法。這些方法都集中定義在事件監(jiān)聽者(EventListener)接口中,這個接口要繼承)接口中,這個接口要繼承java.util.EventListener。v JavaBean系統(tǒng)系統(tǒng)(續(xù)續(xù)) 事件狀態(tài)對象事件狀態(tài)對象 與事件發(fā)生有關(guān)的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中與事件發(fā)生有關(guān)的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中,這種對象是,這種對象是java.util.EventObject的子類。按設(shè)計習慣,這的子類。按設(shè)計習慣,這種事件狀態(tài)對象類的名應(yīng)以種事件狀態(tài)對象類的名應(yīng)以Event結(jié)尾。結(jié)尾。v JavaBean系統(tǒng)系統(tǒng)(續(xù)續(xù)) 事件監(jiān)聽者接口(事

57、件監(jiān)聽者接口(EventListener Interface)與事件監(jiān)聽者)與事件監(jiān)聽者 由于由于Java事件模型是基于方法調(diào)用,因而需要一個定義并組織事件模型是基于方法調(diào)用,因而需要一個定義并組織事件操縱方法的方式。事件操縱方法的方式。JavaBean中,事件操縱方法都被定義在中,事件操縱方法都被定義在繼承了繼承了java.util.EventListener類的類的EventListener接口中,按接口中,按規(guī)定,規(guī)定,EventListener接口的命名要以接口的命名要以Listener結(jié)尾。任何一個結(jié)尾。任何一個類如果想操縱在類如果想操縱在EventListener接口中定義的方法都

58、必須以實現(xiàn)接口中定義的方法都必須以實現(xiàn)這個接口方式進行。這個類也就是事件監(jiān)聽者。這個接口方式進行。這個類也就是事件監(jiān)聽者。 v JavaBean系統(tǒng)系統(tǒng)(續(xù)續(xù)) 事件監(jiān)聽者的注冊與注銷事件監(jiān)聽者的注冊與注銷 為了各種可能的事件監(jiān)聽者把自己注冊入合適的事件源中,建為了各種可能的事件監(jiān)聽者把自己注冊入合適的事件源中,建立源與事件監(jiān)聽者間的事件流,事件源必須為事件監(jiān)聽者提供立源與事件監(jiān)聽者間的事件流,事件源必須為事件監(jiān)聽者提供注冊和注銷的方法。在前面的注冊和注銷的方法。在前面的bound屬性介紹中已看到了這種屬性介紹中已看到了這種使用過程,在實際中,事件監(jiān)聽者的注冊和注銷要使用標準的使用過程,在實際

59、中,事件監(jiān)聽者的注冊和注銷要使用標準的設(shè)計格式:設(shè)計格式: public void add( listener) public void remove( listener)v 適配類適配類 適配類是適配類是JavaBean事件模型中極其重要的一部分。在一些應(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)聽者隊列中,而真正的事件

60、響應(yīng)者并未在監(jiān)聽者隊列中,事件響應(yīng)者應(yīng)做的動作由適配類決定。中,事件響應(yīng)者應(yīng)做的動作由適配類決定。 v Turbo Vision Borland公司開發(fā)的公司開發(fā)的Turbo Pascal6.0中提供了一種面向?qū)ο蟮闹刑峁┝艘环N面向?qū)ο蟮氖录?qū)動程序設(shè)計的工具包事件驅(qū)動程序設(shè)計的工具包Turbo Vision。Turbo Vision把各把各種屏幕上的可見對象歸納為種屏幕上的可見對象歸納為2大類:一類為執(zhí)行對象,另一類為大類:一類為執(zhí)行對象,另一類為管理對象,分別稱為管理對象,分別稱為TView和和TGroup類對象。又因為類對象。又因為TGroup和和TView類有相同之處,故類有相同之處,

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論