<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 協調多個對象之間的交互——中介者模式(三) 20.3 完整解決方案 為了協調界面組件對象之間的復雜交互關系,Sunny公司開發人員使用中介者模式來設計客戶信息管理窗口,其結構示意圖如圖20-7所示: ![](http://img.my.csdn.net/uploads/201301/08/1357652393_2992.jpg) 圖20-7 引入了中介者類的“客戶信息管理窗口”結構示意圖 圖20-7只是一個重構之后的結構示意圖,在具體實現時,為了確保系統具有更好的靈活性和可擴展性,我們需要定義抽象中介者和抽象組件類,其中抽象組件類是所有具體組件類的公共父類,完整類圖如圖20-8所示: ![](http://img.my.csdn.net/uploads/201301/08/1357652403_1841.jpg) 圖20-8 重構后的“客戶信息管理窗口”結構圖 在圖20-8中,Component充當抽象同事類,Button、List、ComboBox和TextBox充當具體同事類,Mediator充當抽象中介者類,ConcreteMediator充當具體中介者類,ConcreteMediator維持了對具體同事類的引用,為了簡化ConcreteMediator類的代碼,我們在其中只定義了一個Button對象和一個TextBox對象。完整代碼如下所示: ``` //抽象中介者 abstract class Mediator { public abstract void componentChanged(Component c); } //具體中介者 class ConcreteMediator extends Mediator { //維持對各個同事對象的引用 public Button addButton; public List list; public TextBox userNameTextBox; public ComboBox cb; //封裝同事對象之間的交互 public void componentChanged(Component c) { //單擊按鈕 if(c == addButton) { System.out.println("--單擊增加按鈕--"); list.update(); cb.update(); userNameTextBox.update(); } //從列表框選擇客戶 else if(c == list) { System.out.println("--從列表框選擇客戶--"); cb.select(); userNameTextBox.setText(); } //從組合框選擇客戶 else if(c == cb) { System.out.println("--從組合框選擇客戶--"); cb.select(); userNameTextBox.setText(); } } } //抽象組件類:抽象同事類 abstract class Component { protected Mediator mediator; public void setMediator(Mediator mediator) { this.mediator = mediator; } //轉發調用 public void changed() { mediator.componentChanged(this); } public abstract void update(); } //按鈕類:具體同事類 class Button extends Component { public void update() { //按鈕不產生交互 } } //列表框類:具體同事類 class List extends Component { public void update() { System.out.println("列表框增加一項:張無忌。"); } public void select() { System.out.println("列表框選中項:小龍女。"); } } //組合框類:具體同事類 class ComboBox extends Component { public void update() { System.out.println("組合框增加一項:張無忌。"); } public void select() { System.out.println("組合框選中項:小龍女。"); } } //文本框類:具體同事類 class TextBox extends Component { public void update() { System.out.println("客戶信息增加成功后文本框清空。"); } public void setText() { System.out.println("文本框顯示:小龍女。"); } } ``` 編寫如下客戶端測試代碼: ``` class Client { public static void main(String args[]) { //定義中介者對象 ConcreteMediator mediator; mediator = new ConcreteMediator(); //定義同事對象 Button addBT = new Button(); List list = new List(); ComboBox cb = new ComboBox(); TextBox userNameTB = new TextBox(); addBT.setMediator(mediator); list.setMediator(mediator); cb.setMediator(mediator); userNameTB.setMediator(mediator); mediator.addButton = addBT; mediator.list = list; mediator.cb = cb; mediator.userNameTextBox = userNameTB; addBT.changed(); System.out.println("-----------------------------"); list.changed(); } } ``` 編譯并運行程序,輸出結果如下: ``` --單擊增加按鈕-- 列表框增加一項:張無忌。 組合框增加一項:張無忌。 客戶信息增加成功后文本框清空。 ----------------------------- --從列表框選擇客戶-- 組合框選中項:小龍女。 文本框顯示:小龍女。 ```
                  <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>

                              哎呀哎呀视频在线观看