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

下載本文檔

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

文檔簡介

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

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

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

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

5、以視為一組構件的集合,以及構件間的交互(連接器)器) 構件(構件(Components) 連接器(連接器(Connectors) E.g. C/S結構中結構中 構件: 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. 異構風格的集成異構風格的

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

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

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

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

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

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

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

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

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

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

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

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

18、信號在信道中傳輸,然后再送入信道;傳輸,然后再送入信道; 信道是指信號傳輸?shù)耐ǖ溃瓤梢钥闯墒枪艿溃ㄒ驗樗哪啃诺朗侵感盘杺鬏數(shù)耐ǖ溃瓤梢钥闯墒枪艿溃ㄒ驗樗哪康牟⒉皇菫榱藢崿F(xiàn)某種功能,僅僅是為了信號的傳輸),也可的并不是為了實現(xiàn)某種功能,僅僅是為了信號的傳輸),也可以從某種意義上看做是過濾以從某種意義上看做是過濾 器(因為信號經(jīng)過信道后會產(chǎn)生器(因為信號經(jīng)過信道后會產(chǎn)生一些變化,比如加入噪聲的影響,從而改變一些變化,比如加入噪聲的影響,從而改變 了發(fā)送設備發(fā)出的了發(fā)送設備發(fā)出的信號)。信號)。 接收設備從接收信號中恢復出相應的原始信號;接收設備從接收信號中恢復出相應的原始信號; 受信者

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

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

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

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

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

24、模式和顯示顏色進行設有一個外部控制接口對顯示規(guī)則如顯示模式和顯示顏色進行設置。整個系統(tǒng)的體系結構如圖所示。置。整個系統(tǒng)的體系結構如圖所示。 系統(tǒng)體系結構圖 v 過濾器的設計過濾器的設計 可以將過濾器用狀態(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):表示過濾器處于待啟動狀態(tài),當外部啟動過濾器后停止狀態(tài):表示過濾器處于待啟動狀態(tài),當外部啟動過濾器后,過濾器處于處理狀態(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ù)隊列為空,此時過濾器等待,當有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài);,當有新的數(shù)據(jù)輸入時,過濾器處于處理狀態(tài); 休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能休眠狀態(tài):表示過濾器已經(jīng)啟動,但被掛起。掛起的原因可能是由于外界用戶要設置過濾器的控制參數(shù),這樣暫時將過濾器是由于外界用戶要設置過濾器的控制參數(shù),這樣暫時將過濾器掛起但不中止它,當控制參數(shù)設置完畢后再將過濾器還原,繼掛起但不中止它,當控制參數(shù)設置完畢后再將過濾器還原,繼續(xù)運行。這樣,實現(xiàn)了較高的效率。續(xù)運行。這樣,實現(xiàn)了較高的效率

26、。管道管道- -過濾器風格實例過濾器風格實例過濾器狀態(tài)轉(zhuǎn)換圖 v Unix系統(tǒng)中的管道過濾器結構系統(tǒng)中的管道過濾器結構 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ù)類型、類繼承為一體,使軟件工程公認的模塊化、信息隱藏、抽象、重用性等原則在面軟件工程公認的模塊化、信息隱藏、抽象、重用性等原則在面向?qū)ο箫L格下得以充分實現(xiàn)。向?qū)ο箫L格下得以充分實現(xiàn)。 v 應用場合

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

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

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

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

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

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

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

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

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

41、和關于本系統(tǒng)的簡介日歷等系統(tǒng)工具和關于本系統(tǒng)的簡介。 系統(tǒng)活動圖 系統(tǒng)類結構圖 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)有一定的目標,各子系統(tǒng)在某一種消息機制的控制下,為系統(tǒng)有一定的目標,各子系統(tǒng)在某一種消息機制的控制下,為了這個目標而協(xié)調(diào)行動;了這個目標而協(xié)調(diào)行動; 在

42、某一種消息機制的控制下,系統(tǒng)作為一個整體與環(huán)境相適應在某一種消息機制的控制下,系統(tǒng)作為一個整體與環(huán)境相適應和協(xié)調(diào);和協(xié)調(diào);v 事件驅(qū)動系統(tǒng)具有以下一些特點(續(xù)):事件驅(qū)動系統(tǒng)具有以下一些特點(續(xù)): 在一個系統(tǒng)的若干子系統(tǒng)中,必定有一個子系統(tǒng)起著主導作用在一個系統(tǒng)的若干子系統(tǒng)中,必定有一個子系統(tǒng)起著主導作用,而其他子系統(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ū)動風格系統(tǒng)設計時有下述幾條基本原則事件驅(qū)動風格系統(tǒng)設計時有下述幾條基本原則 從系統(tǒng)論的角度來看待描述的對象,合理分解子系統(tǒng),保證各從系統(tǒng)論的角度來看待描述的對象,合理分解子系統(tǒng),保證各個子系統(tǒng)的獨立性和社會性;個子系統(tǒng)的獨立性和社會性; 無論系統(tǒng)多么復雜,子系統(tǒng)性質(zhì)的差異多么大,任何子系統(tǒng)都無論系統(tǒng)多么復雜,子系統(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)通過傳遞消息

44、和執(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é)同操作。 v 事件驅(qū)動風格系統(tǒng)設計時有下述幾條基本原則事件驅(qū)動風格系統(tǒng)設計時有下述幾條基本原則(續(xù)續(xù)) 在一個完整系統(tǒng)中,必須有這樣一個子系統(tǒng),它沒有上級,必在一個完整系統(tǒng)中,必須有這樣一個子系統(tǒng),它沒有上級,必須收集系統(tǒng)外的事件及下級發(fā)出的事件。須收集系統(tǒng)外的事件及下級發(fā)出的事件。 管理類型的子系統(tǒng)一般不執(zhí)行具體操作,它的主要功能是按照管理類型的子系統(tǒng)一般不執(zhí)行具

45、體操作,它的主要功能是按照自己的職能指揮下級完成任務,功能性操作一般由執(zhí)行類型的自己的職能指揮下級完成任務,功能性操作一般由執(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)具有某種意義上的遞歸性,形成了“部分部分整體整體”的層次結構,可以用屬性結構加以

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

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

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

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

50、續(xù)) 事件狀態(tài)對象事件狀態(tài)對象 與事件發(fā)生有關的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中與事件發(fā)生有關的狀態(tài)信息一般都封裝在一個事件狀態(tài)對象中,這種對象是,這種對象是java.util.EventObject的子類。按設計習慣,這的子類。按設計習慣,這種事件狀態(tài)對象類的名應以種事件狀態(tài)對象類的名應以Event結尾。結尾。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結尾。任何一個結尾。任何一個類如果想操縱在類如果想操縱在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)聽者的注冊和注銷要使用標準的使用過程,在實際中,事件監(jiān)聽者的注冊和注銷要使用標準的設計格式:設計格式: public void add( listener) public void remove( listener)v 適配類適配類 適配類是適配類是JavaBean事

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

54、一種面向?qū)ο蟮氖录?qū)動程序設計的工具包事件驅(qū)動程序設計的工具包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ū)動程序設計很好地體現(xiàn)了面向?qū)ο蠓椒ê褪录?qū)動程序設計方法的精髓,方法的精髓,TApplication是一個可以運行的交互式程序?qū)ο笫且粋€可以運行的交互式程序?qū)ο螅藛雍屯顺鲋猓惶峁┤魏喂δ埽褂茫藛雍屯顺鲋猓惶峁┤魏喂δ埽褂肨urbo Vision,就能高效和快速地開發(fā)出高質(zhì)量地應用程序。,就能高效和快速地開發(fā)出高質(zhì)量地應用程序。 Turbo Vision Turbo Vision軟件包中對象

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論