表示-抽象-控制——系統結構模式學習筆記
原文連結:enter link description here 作者:chgaowei
表示-抽象-控制(PAC)體系結構模式以合作agent的層次形式定義了互動式軟體系統的一種結構。每個agent負責應用程式功能的某一特定方面,並且有表示,抽象,控制三個元件構成。這種細分將agent的人機互動部分和與其功能核心和它與其他agent的通訊分割開來。
1. 例子
一個簡單的有比例表示的政治選舉系統。
2. 語境
在agent的協助下開發一個互動式應用程式。
3. 問題
在這種寫作的agent體系結構中,為某一特定任務指定一個agent,所有的agent提供所有系統的功能。
1) agent通常維護他們自己的狀態和資料;
2) 由於他們各自的人機互動常常差別較大,互動agent提供他們各自的使用者介面。
3) 系統隨時間變化,他們的表示特性特別易於變化。
4. 解決方案
以PAC agent樹狀層次結構構建互動式應用程式。應有一個頂層agent,幾個中間層agent,多個底層agent。每個agent分別都負責應用功能的某一特定方面,並且由抽象,控制,表示三個部分(元件)構成:(?為什麼需要這麼多的agent,可以理解為一個模組嗎?)。
1) 表示元件提供PAC agent的可視行為。
2) 抽象元件維護了構成agent基礎的資料模型,並提供對這些資料進行操作的功能。
3) 控制元件連線表示與抽象元件,並且負責與其他的PAC agent通訊。
頂層的agent提供系統的核心功能。
底層的agent表達一些獨立語義概念。使用者可以基於這些概念進行工作,如:電子表單和圖表。
中層的agent表達了底層agent的組合或底層agent之間的關係。
5. 結構
1、頂層agent
它應該是整個系統的核心部分。它維護了整個系統的全域性資料模型。
1) 抽象元件負責維護整個系統的全域性資料模型。
2) 表示元件通常沒有什麼實際的用處。
3) 控制元件的功能包括:為底層agent提供服務以操作全域性資料;維護agent的層次結構;儲存使用者與系統的互動資訊:(?為什麼在這裡儲存)
2、底層agent
底層agent給出了應用領域的一個具體語義概念(比如,柱狀圖)。
1) 表示元件給出了對應於語義概念的一個具體檢視。並儲存了檢視的資訊。
2) 抽象元件的功能和頂層agent抽象元件功能類似,負責維護agent的資料,不同的是,這些資料時這個agent私有的。
3) 控制元件負責表示元件和抽象元件的通訊,避免他們的直接依賴。另外,負責和更高層的agent進行通訊。
3、中層agent
作用是合作與協作。用於當一個複雜物件由多個底層agent構成,它維護這多個底層agent。
另外一個作用是維護底層agent之間的一致性。例如,協調相同資料的多個檢視。
抽象元件維護他的特有資料,表示元件實現了它的使用者介面,控制元件具有負責和其他agent通訊。
6. 動態特性
主要描述了兩個動態特性:
1) 使用者呼叫一個新的圖形。檢視協調agent向圖形agent傳送open請求;圖形agent控制元件收到請求,並且向頂層agent申請資料;頂層agent控制元件收到請求後,通過抽象元件獲取資料,並返回給圖形agent控制元件;圖形agent控制元件將資料傳送給抽象元件;抽象元件儲存資料;控制元件呼叫表示元件生成圖形;
2) 使用者輸入一個資料。使用者通過電子表單輸入資料;電子表單的控制元件間資料傳送至頂層agent;頂層agent控制元件收到資料,通知抽象元件更新資料;抽象元件通知控制元件更新所有依賴於資料的agent;控制元件通知協調程式agent。
7. 實現
1) 定義一個應用模型。
A. 系統應提供哪些服務;
B. 哪些元件提供這些服務;
C. 元件間關係如何;
D. 如何協作;
E. 各元件對什麼資料進行操作;
F. 使用者如何與軟體進行互動;
2) 為組織pac 層次定義一般策略。當一組agent依賴於一個agent是,把這個agent看成是這組agent的根。選擇一個合適的層的深度,過深或過淺均不好。
3) 明確說明頂層agent。這是整個系統的核心。
4) 明確說明底層agent。這是使用者可操作和觀察的最小單元。
5) 明確說明系統服務的底層agent。比如,通訊agent,錯誤處理agent。
6) 明確說中間agent。包括兩種,一種負責協作,一種負責組合。
7) 從人機互動中分離核心功能。
8) 提供外部介面。
9) 連線各層次。
8. 效果
1) 事務分離;
2) 支援變化和擴充套件;
3) 支援多工;
不足:
1) 增加複雜性;
2) 負責的控制元件;
3) 效率;
4) 可應用性;
相關文章
- scala學習筆記:控制抽象筆記抽象
- 層模式——面向模式體系結構學習筆記模式筆記
- Oracle體系結構學習筆記Oracle筆記
- ASM學習筆記_體系結構ASM筆記
- Java設計模式學習筆記(四) 抽象工廠模式Java設計模式筆記抽象
- DG學習筆記(2)_體系結構筆記
- Go 結構 學習筆記Go筆記
- Java設計模式學習筆記——工廠模式與抽象工廠模式Java設計模式筆記抽象
- Hive學習筆記 1 Hive體系結構Hive筆記
- 抽象類特點 學習筆記抽象筆記
- GO 學習筆記->結構體Go筆記結構體
- 資料結構學習筆記資料結構筆記
- 資料結構學習筆記--棧資料結構筆記
- 資料結構學習筆記1資料結構筆記
- CUDA 學習筆記之gpu結構筆記GPU
- 記下原來學習Oracle的筆記之——體系結構Oracle筆記
- 作業系統學習筆記之初識程式和程式控制作業系統筆記
- 分散式系統學習筆記分散式筆記
- 作業系統學習筆記作業系統筆記
- Java學習筆記之介面和抽象類Java筆記抽象
- 正規表示式學習筆記筆記
- Java Lambda 表示式學習筆記Java筆記
- angular學習筆記(十一)-表示式Angular筆記
- 結構化程式設計--學習筆記程式設計筆記
- 【C#學習筆記】結構體使用C#筆記結構體
- jQuery 學習筆記:jQuery 程式碼結構jQuery筆記
- 資料結構學習筆記(一) (轉)資料結構筆記
- muduo網路庫學習筆記(9):Reactor模式的關鍵結構筆記React模式
- 尚矽谷MySQL學習筆記(Day_6)-流程控制結構介紹MySql筆記
- 10,其他控制結構(perl筆記)筆記
- OS學習筆記七:IO系統筆記
- C、作業系統學習筆記作業系統筆記
- 系統程式設計學習筆記程式設計筆記
- 抽象類的成員特點 學習筆記抽象筆記
- Python學習筆記 - lambda表示式Python筆記
- Ruby學習筆記-正規表示式筆記
- 正規表示式學習筆記一筆記
- PERL學習筆記---正規表示式筆記