架構風格
- 管道-過濾器風格:每個構建都有一組輸入和輸出,數據輸入構建,經過內部處理,然後產生數據輸出。
- 主程序-子程序:麵向過程的架構,所有的計算構件作為子程序協作工作,並由一個主程序順序的調用這些子程序,構件用共享存儲區交換數據。
-
麵向對象風格:麵向對象架構風格的特征是將數據標識和基本操作封裝在對象中。這種模式的構件是對象,對象維護自身表示的完整性,對象之間通過消息機製進行通信,對象交互時需要知道彼此的標識,通過對象之間的協作完成計算過程。
麵向對象好處:
1. 可以自然映射到現實對象上,易於理解和編程(傳統的說法)
2. 低耦合:OO的繼承和多態使得服務提供者可以僅提供接口,而將具體實現推遲到運行時,從而降低調用者和被調用者之間的耦合。(解耦是為了適應變化)
3. 高類聚:OO是將數據,和對數據的操作綁定在一個類中,並通過可見性約束,隻暴露給Client應該看見的操作和變量。(內聚是為了重用)
4. 因為低耦合,高內聚,所以提供了更好的可維護、可重用、可擴展、靈活性。 - 事件驅動風格(隱式調用):係統中的其他構件中的過程在一個或多個事件中注冊,當一個事件被觸發,係統自動調用在這個事件中注冊的所有過程。實例,數據庫係統,用戶界麵。
- 分層(C/S,B/S, 三層, n層結構)
三層:展現層,業務層,數據庫層
n層:在三層的基礎上,將業務層劃分為多層的模塊。 - C2風格:構件與構件之間的直接連接是不允許的,件之間的通訊是通過以連接件為中介的異步消,交換機製來實現的,構件相對獨立,構件之間依賴性較少。
實例:有多個Client端的和一個Sever端的聊天工具,ClientA發消息給ClientB需要經過Sever連接轉發。 - 倉庫風格:在倉庫(Repository)風格中,有兩種不同構件:中央數據結構(共享數據)說明當前狀態,獨立構件在中央數據存儲上執行。共享數據可以是傳統數據庫,也可以是黑板係統。實例,智能係統。
- 回調機製:回調機製是一種常見的設計模型,他把工作流內的某個功能,按照約定的接口暴露給外部使用者,為外部使用者提供數據,或要求外部使用者提供數據。
- 虛擬機風格:解釋器;基於規則的係統。實例,Java虛擬機,解釋執行的程序。
- 過程控製環路(閉環):控製環路風格是將過程輸出的指定屬性維護在一個特定的參考值(設定值),將事務處理看成輸入、加工、輸出、反饋、再輸入的一個持續的過程模型。實例,空調的溫度自動調節器(設定值是溫度),巡航係統(設定值是速度)。
閉環控製是根據控製對象輸出反饋來進行校正的控製方式,它是在測量出實際與計劃發生偏差時,按定額或標準來進行糾正的。閉環控製,從輸出量變化取出控製信號作為比較量反饋給輸入端控製輸入量,一般這個取出量和輸入量相位相反,所以叫負反饋控製,自動控製通常是閉環控製。比如家用空調溫度的控製 - 微內核:
用例:Windows NT 操作係統,JBoss Web服務器
優點:
1. 靈活性和擴展性。微內核係統把最小核心功能同擴展功能和特定應用分離開來,使係統高內聚、低耦合、可以用plug-in的形式對應用進行擴展。
2. 係統具有更高的可移植性。
3. 健壯性,微內核係統將許多服務移植到用戶空間,二者各自占用獨立的內存空間,某個具體應用本身的錯誤或存在的問題不會影響內核的正常運行。並且模塊各自獨立的設計也可以把安全問題分解,使係統服務程序嚴格按照安全要求運行。
4. 策略和機製的分離,從某種意義上講微內核體係結構模式是一種特殊的層體係結構,這種把核心功能、擴展功能和特定應用分離,分處在不同的抽象層,分別實現機製和策略的思想,進一步體現了係統設計的高內聚、低耦合。 - 回調機製
回調(Callback)機製是一種常見的設計模型,他把工作流內的某個功能,按照約定的接口暴露給外部使用者,為外部使用者提供數據,或要求外部使用者提供數據。
=======================================================
軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。
同步調用:一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;
回 調:一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;
異步調用:一種類似消息或事件的機製,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。
回調和異步調用的關係非常緊密:使用回調來實現異步消息的注冊,通過異步調用來實現消息的通知。
黑板係統(Blackboard system):
黑板模型主要由“黑板”、知識源(Knowledge Source)和控製機構三大部分組成。
- 黑板
所謂“黑板”,就是一個分層的全局工作區(或稱全局數據庫)。它用來存儲初始數據、中間結果和最終結果。整個黑板被分為若幹層,每一層用於描述領域問題的某一類信息。高層信息可以看作是下層信息的抽象(或整體),反之,下層信息可以看作是上層信息的實例(或部分)。 - 知識源
所謂知識源,就是一個知識模塊。黑板結構中具有多個知識源,每個知識源能用來完成某些特定的解題功能。知識源可以表示完成過程、規則集或邏輯斷言等形式。一個知識源可以視為一個大規則,其條件部分稱為知識源先決條件,動作部分稱為知識源體。知識源的先決條件一旦與黑板狀態匹配,該知識源便被激活,這時知識源體執行,其結果將導致黑板狀態的變化。知識源之間互相獨立,它們隻能通過黑板進行通訊和互相調用。 - 控製機構
控製機構是求解問題的推理機構,由監督程序和調度程序組成。監督程序時刻注視著黑板狀態,根據黑板狀態采用某種策略選擇合適的知識源。將其條件部分放入調度隊列,隨後條件部分與黑板狀態匹配,若匹配成功,則將其動作部分放入調度隊列。動作部分的執行便又改變了黑板狀態。調度程序通過選擇所謂“聚焦”來優先使用隊列中最重要、最有希望的知識源來執行。
黑板模型是一種適時推理模型,即係統能按“最適宜”的原則自行決定什麼時候和怎樣使用知識。在黑板模型中,解空間被組織成層次性結構,層次結構中每一層上的信息都表示局部解,相應層次上的知識模塊對這種信息進行處理,生成更高級的局部解,直到最後的解。
理想的黑板模型中沒有控製機製,知識源含有領域知識且是自驅動的。這樣,每個知識源都“注視”著黑板上的狀態信息,而且能“適時”地決定是否要對黑板進行操作。所以,在理想黑板模型中,各知識源實際上是並行執行的(這非常類似於現在的股票交易),但在現有的串行環境下這種並行卻難以實現。因此,才增設了控製機製等方法把黑板變成串行係統(這又類似於拍賣過程)。當然,這樣就限製了黑板模型的潛在功效。
麵向對象設計原則:
設計原則名稱 |
設計原則簡介 |
重要性 |
單一職責原則 (Single |
類的職責要單一,不能將太多的職責放在一個類中。 |
|
開閉原則 (Open-Closed |
軟件實體對擴展是開放的,但對修改是關閉的,即在不修改一個軟件實體的基礎上去擴展其功能。 |
|
裏氏代換原則 (Liskov |
在軟件係統中,一個可以接受基類對象的地方必然可以接受一個子類對象。 |
|
依賴倒轉原則 (Dependency |
要針對抽象層編程,而不要針對具體類編程。 |
|
接口隔離原則 (Interface |
使用多個專門的接口來取代一個統一的接口。 |
|
合成複用原則 (Composite Reuse |
在係統中應該盡量多使用組合和聚合關聯關係,盡量少使用甚至不使用繼承關係。 |
|
迪米特法則 (Law of Demeter, |
一個軟件實體對其他實體的引用越少越好,或者說如果兩個類不必彼此直接通信,那麼這兩個類就不應當發生直接的相互作用,而是通過引入一個第三者發生間接交互。 |
|
最後更新:2017-04-02 15:15:07