• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            為生存而奔跑

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 328479
            • 排名 - 74

            最新評論

            閱讀排行榜

            評論排行榜

            Mediator模式包裝了一系列對象的相互作用的方式,使得這些對象不必相互明顯引用,從而降低耦合性。

            盡管將一個系統分割成許多對象通常可以增加其可復用性,但是對象間相互連接的激增又會降低其可復用性了。大量的連接使得一個對象不可能在沒有其他對象的支持下工作,系統表現為一個不可分割的整體,所以,對系統的行為進行任何較大的改動就十分困難。

            作用:用一個中介對象封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。

            中介者模式很容易在系統中應用,也很容易在系統中誤用。當系統出現了‘多對多’交互復雜的對象群時,不要急于使用中介者模式,而要先反思你的系統在設計上是不是合理。

            中介者模式的優點:首先,Mediator的出現減少了各個Colleague的耦合,使得可以獨立地改變和復用各個Colleague類和Mediator。其次,由于把對象如何協作進行了抽象,將中介作為一個獨立的概念并將其封裝在一個對象中,這樣關注的對象就從對象各自本身的行為轉移到它們之間的交互上來,也就是站在一個更宏觀的角度去看待系統。

            中介者模式的缺點:由于ConcreteMediator控制了集中化,于是就把交互復雜性變為了中介者的復雜性,這就使得中介者會變得比任何一個ConcreteColleague都復雜。



            abstract class Mediator
            {
                
            public abstract void colleagueChanged(Colleague c);
            }

            class ConcreteMediator extends Mediator
            {
                
            private Colleague1 colleague1;
                
            private Colleague2 colleague2;
                
            public Concretemediator()
                
            {
                    colleague1
            =new Colleague1();
                    colleague2
            =new Colleague2();
                }

                
            public void colleagueChanged(Colleague c)
                
            {
                    colleague1.action();
                    colleague2.action();
                }

            }

            abstract class Colleague
            {
                Mediator m;
                
            public Colleague(Mediator m)
                
            {
                    
            this.m=m;
                }

                
            public void change()
                
            {
                    m.colleagueChanged(
            this);
                }

                
            public abstract void action(); 
            }

            class Colleague1 extends Colleague
            {
                
            public Colleague1(Mediator m)
                
            {
                    
            super(m);
                }

                
            public void action()
                
            {
                    System.out.println(
            "action from Colleague1");
                }

            }

            class Colleague2 extends Colleague
            {
                
            public Colleague2(Mediator m)
                
            {
                    
            super(m);
                }

                
            public void action()
                
            {
                    System.out.println(
            "action from Colleague2");
                }

            }

            public class Client
            {
                
            public static void main(String[] args) 
                
            {
                    ConcreteMediator mediator
            =new ConcreteMediator();
                    Colleague1 c1
            =new Colleague1(mediator);
                    Colleague2 c2
            =new Colleague2(mediator);
                    mediator.colleagueChanged(c1);
                }

            }

            posted on 2009-11-30 09:51 baby-fly 閱讀(1299) 評論(1)  編輯 收藏 引用 所屬分類: Design Pattern

            Feedback

            # re: 設計模式--Mediator模式 2011-09-20 09:54 七弦
            你給的這個例子是錯的
            Colleage沒有提供無參構造函數。得把Colleage派生類的實例傳遞進去。  回復  更多評論
              

            久久久国产乱子伦精品作者| 久久精品国产精品亚洲下载| 久久天天躁夜夜躁狠狠躁2022 | 久久精品成人免费网站| 久久r热这里有精品视频| 久久精品国产亚洲7777| 婷婷久久久亚洲欧洲日产国码AV| 欧美噜噜久久久XXX| 久久国产成人午夜aⅴ影院| 久久只有这精品99| 久久国产精品成人免费| 久久精品国产亚洲AV影院| 亚洲午夜精品久久久久久人妖| 欧美成人免费观看久久| 久久久久久综合一区中文字幕 | 伊人久久精品无码二区麻豆| 69久久精品无码一区二区| 伊人久久亚洲综合影院| 91精品国产高清久久久久久国产嫩草 | 久久永久免费人妻精品下载| 色诱久久av| 91久久精品国产成人久久| 久久精品国产乱子伦| 久久亚洲国产成人影院网站 | 无码人妻久久一区二区三区蜜桃| 久久综合给久久狠狠97色| 欧美伊人久久大香线蕉综合| 久久精品国产国产精品四凭| 精品久久久久久中文字幕人妻最新| 久久人人爽人人爽人人片AV高清 | 伊人久久大香线蕉综合Av | 伊人伊成久久人综合网777| 久久影院亚洲一区| 亚洲一本综合久久| 国产69精品久久久久99尤物| 精品永久久福利一区二区| 久久精品中文闷骚内射| 无码人妻精品一区二区三区久久久| 久久香综合精品久久伊人| 99久久夜色精品国产网站 | 97香蕉久久夜色精品国产|