<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 協調多個對象之間的交互——中介者模式(五) 20.4 中介者模式總結 中介者模式將一個網狀的系統結構變成一個以中介者對象為中心的星形結構,在這個星型結構中,使用中介者對象與其他對象的一對多關系來取代原有對象之間的多對多關系。中介者模式在事件驅動類軟件中應用較為廣泛,特別是基于GUI(Graphical User Interface,圖形用戶界面)的應用軟件,此外,在類與類之間存在錯綜復雜的關聯關系的系統中,中介者模式都能得到較好的應用。 1. 主要優點 中介者模式的主要優點如下: (1) 中介者模式簡化了對象之間的交互,它用中介者和同事的一對多交互代替了原來同事之間的多對多交互,一對多關系更容易理解、維護和擴展,將原本難以理解的網狀結構轉換成相對簡單的星型結構。 (2) 中介者模式可將各同事對象解耦。中介者有利于各同事之間的松耦合,我們可以獨立的改變和復用每一個同事和中介者,增加新的中介者和新的同事類都比較方便,更好地符合“開閉原則”。 (3) 可以減少子類生成,中介者將原本分布于多個對象間的行為集中在一起,改變這些行為只需生成新的中介者子類即可,這使各個同事類可被重用,無須對同事類進行擴展。 2. 主要缺點 中介者模式的主要缺點如下: 在具體中介者類中包含了大量同事之間的交互細節,可能會導致具體中介者類非常復雜,使得系統難以維護。 3. 適用場景 在以下情況下可以考慮使用中介者模式: (1) 系統中對象之間存在復雜的引用關系,系統結構混亂且難以理解。 (2) 一個對象由于引用了其他很多對象并且直接和這些對象通信,導致難以復用該對象。 (3) 想通過一個中間類來封裝多個類中的行為,而又不想生成太多的子類。可以通過引入中介者類來實現,在中介者中定義對象交互的公共行為,如果需要改變行為則可以增加新的具體中介者類。 練習 Sunny軟件公司欲開發一套圖形界面類庫。該類庫需要包含若干預定義的窗格(Pane)對象,例如TextPane、ListPane、GraphicPane等,窗格之間不允許直接引用。基于該類庫的應用由一個包含一組窗格的窗口(Window)組成,窗口需要協調窗格之間的行為。試采用中介者模式設計該系統。 2010年上半年 軟件設計師 下午試卷 第三題 【說明】 某運輸公司決定為新的售票機開發車票銷售的控制軟件。圖I給出了售票機的面板示意圖以及相關的控制部件。 ![](http://my.csdn.net/uploads/201208/08/1344409235_9702.jpg) 圖I 售票機面板示意圖 售票機相關部件的作用如下所述: (1) 目的地鍵盤用來輸入行程目的地的代碼(例如,200表示總站)。 (2) 乘客可以通過車票鍵盤選擇車票種類(單程票、多次往返票和座席種類)。 (3) 繼續/取消鍵盤上的取消按鈕用于取消購票過程,繼續按鈕允許乘客連續購買多張票。 (4) 顯示屏顯示所有的系統輸出和用戶提示信息。 (5) 插卡口接受MCard(現金卡),硬幣口和紙幣槽接受現金。 (6) 打印機用于輸出車票。 (7) 所有部件均可實現自檢并恢復到初始狀態。 現采用面向對象方法開發該系統,使用UML進行建模,系統的頂層用例圖和類圖分別如圖II和圖III所示。 圖II 頂層用例圖 ![](http://img.my.csdn.net/uploads/201301/08/1357654748_5495.jpg) 圖III 類圖 【問題1】 根據說明中的描述,給出圖II中A1和A2所對應的執行者,U1所對應的用例,以及(1)、(2)處所對應的關系。 【問題2】 根據說明中的描述,給出圖III中缺少的C1-C4所對應的類名以及(3)-(6)處所對應的多重度。 【問題3】 圖III中的類圖設計采用了中介者(Mediator)設計模式,請說明該模式的內涵。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看