亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式(20)---中介者模式

2019-11-14 16:17:39
字體:
來源:轉載
供稿:網友

一、定義

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

解釋:通俗來講,有多個對象,它們相互之間有交互?,F在為了降低它們的耦合度,提供一個中介者,相當于第三方,各個對象都通過第三方來進行相互間的邏輯操作。

 

二、UML類圖及基本代碼

基本代碼:

abstract class Mediator    {        public abstract void Send(string message, Colleague colleague);    }    class ConcreteMediator : Mediator    {        PRivate ConcreteColleage1 colleague1;        private ConcreteColleage2 colleague2;        public ConcreteColleage1 Colleague1        {            set { colleague1 = value; }        }        public ConcreteColleage2 Colleague2        {            set { colleague2 = value; }        }        public override void Send(string message, Colleague colleague)        {            if (colleague == colleague1)            {                colleague2.Receive(message);            }            else            {                colleague1.Receive(message);            }        }    }    abstract class Colleague    {        protected Mediator mediator;        public Colleague(Mediator mediator)        {            this.mediator = mediator;        }    }    class ConcreteColleage1 : Colleague    {        public ConcreteColleage1(Mediator mediator)            : base(mediator)        { }        public void Send(string message)        {            mediator.Send(message, this);        }        public void Receive(string message)        {            Console.WriteLine("同事1得到信息:" + message);        }    }    class ConcreteColleage2 : Colleague    {        public ConcreteColleage2(Mediator mediator)            : base(mediator)        { }        public void Send(string message)        {            mediator.Send(message, this);        }        public void Receive(string message)        {            Console.WriteLine("同事2得到信息:" + message);        }    }

 

客戶端調用及其結果:

ConcreteMediator mediator = new ConcreteMediator();            ConcreteColleage1 c1 = new ConcreteColleage1(mediator);            ConcreteColleage2 c2 = new ConcreteColleage2(mediator);            mediator.Colleague1 = c1;            mediator.Colleague2 = c2;            c1.Send("吃飯了嗎?");            c2.Send("還沒有,你打算請客?");

 

三、具體實例

A和B博弈,A贏則B會輸,反之亦然。假設A和B開始時都要20塊錢,基本代碼如下:

首先構造抽象中介者類和具體中介者類:

public abstract class AbstractMediator    {        public abstract void AWin(int count);        public abstract void BWin(int count);    }    public class MediatorPater : AbstractMediator    {        private ParterA a;        private ParterB b;        public ParterA A        {            set { a = value; }        }        public ParterB B        {            set { b = value; }        }        public override void AWin(int count)        {            a.MoneyCount += count;            b.MoneyCount -= count;        }        public override void BWin(int count)        {            b.MoneyCount += count;            a.MoneyCount -= count;        }    }

接著編寫抽象對弈者,構造具體的對弈者A和B:

public abstract class AbstractCardPartner    {        public int MoneyCount { get; set; }        public AbstractCardPartner()        {            MoneyCount = 0;        }        public abstract void ChangeCount(int count, AbstractMediator mediator);    }    public class ParterA : AbstractCardPartner    {        public override void ChangeCount(int Count, AbstractMediator mediator)        {            mediator.AWin(Count);        }    }    public class ParterB : AbstractCardPartner    {        public override void ChangeCount(int Count, AbstractMediator mediator)        {            mediator.BWin(Count);        }    }

客戶端調用代碼及其結果:

MediatorPater mediator = new MediatorPater();            ParterA partA = new ParterA();            ParterB partB = new ParterB();            mediator.A = partA;            mediator.B = partB;            partA.MoneyCount = 20;            partB.MoneyCount = 20;            partA.ChangeCount(7, mediator);            Console.WriteLine("A 現在的錢是:{0}", partA.MoneyCount);            Console.WriteLine("B 現在的錢是:{0}", partB.MoneyCount);             partB.ChangeCount(11, mediator);            Console.WriteLine("A 現在的錢是:{0}", partA.MoneyCount);            Console.WriteLine("B 現在的錢是:{0}", partB.MoneyCount); 

 

四、優缺點及其適用場景

優點:

1)將各個對象類解耦,同時簡化對象之間的關系,使系統變為松耦合。

2)系統更加靈活,各個對象獨立而易于復用。

缺點:

1)中介者模式中,中介者承擔了較大的責任,一旦中介者出現問題,整個系統都會受到較大的影響。

2)新增一個對象類,需要修改抽象中介者和具體中介者類。

 

適用場景:

中介者模式一般應用于一組對象以定義良好但是復雜的方式進行通信的場合,及想定制一個分布在多個類中的行為,而又不想生成太多的子類的場合。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美韩国理论所午夜片917电影| 色爱精品视频一区| 亚洲高清一区二| 日韩视频在线免费观看| 裸体女人亚洲精品一区| 国产精品h在线观看| 97在线视频国产| 国产香蕉一区二区三区在线视频| 久久激情视频久久| 成人在线视频网| 91在线色戒在线| 91色中文字幕| 中文字幕国产亚洲| 午夜精品福利在线观看| 亚洲欧洲日产国码av系列天堂| 亚洲视频一区二区三区| 国产精品视频资源| 亚洲国产精品va在看黑人| 伊人久久大香线蕉av一区二区| 欧美日本国产在线| 亚洲影院在线看| 欧美视频在线看| 精品国产一区二区三区久久狼5月| 日韩大陆欧美高清视频区| 91免费福利视频| 欧美亚洲视频在线观看| 日韩国产欧美精品一区二区三区| 亚洲国产精品小视频| 日本午夜精品理论片a级appf发布| 97超级碰在线看视频免费在线看| 国产成人91久久精品| 国产精品久久久久久亚洲影视| 国产午夜精品麻豆| 97久久超碰福利国产精品…| 国产成人免费av| 伊人久久免费视频| 欧美日韩亚洲网| 97久久精品人搡人人玩| 久久这里有精品视频| 亚洲小视频在线观看| 午夜精品视频在线| 日韩精品视频在线观看网址| 午夜精品久久久久久99热软件| 精品国产一区二区在线| 日韩大片免费观看视频播放| 精品成人国产在线观看男人呻吟| 欧美成人激情视频免费观看| 日韩av网站在线| 国产精品久久久av| 亚洲在线观看视频网站| 亚洲一区二区三区视频| 中文字幕无线精品亚洲乱码一区| 色悠悠久久久久| 国产精品激情av电影在线观看| 欧美性猛交99久久久久99按摩| 亚洲一区二区久久久久久久| 91精品视频免费观看| 97视频在线观看播放| 91日韩在线视频| 亚洲国产精品成人精品| 成人做爰www免费看视频网站| 欧美一乱一性一交一视频| 国产一区二区丝袜高跟鞋图片| 爽爽爽爽爽爽爽成人免费观看| 成人精品视频在线| 69av成年福利视频| 国产精品欧美激情在线播放| 色婷婷亚洲mv天堂mv在影片| 久久69精品久久久久久国产越南| 亚洲欧美第一页| 久久久久久国产精品美女| 国产精品久久久久久亚洲影视| 97在线免费观看| 午夜精品蜜臀一区二区三区免费| 91精品久久久久久久久久另类| 色伦专区97中文字幕| 精品成人在线视频| 日韩欧美大尺度| 欧美一级片久久久久久久| 成人性生交大片免费看小说| 亚洲综合精品伊人久久| 精品国产一区二区三区久久| 在线日韩第一页| 欧美激情xxxxx| 7m精品福利视频导航| 久久久久久久999精品视频| 亚洲一区二区在线播放| 在线看欧美日韩| 亚洲国产欧美日韩精品| 欧美不卡视频一区发布| 亚洲老头老太hd| 久久免费国产精品1| 成人免费视频网| 亚洲性无码av在线| 不卡av电影院| 欧美性极品少妇精品网站| 亚洲精品小视频| 欧美亚洲伦理www| 亚洲欧美国产精品| 亚洲最大福利视频| 国产一区二区三区精品久久久| 日韩精品极品视频免费观看| 精品日韩视频在线观看| 欧美激情第一页xxx| 日韩精品在线视频观看| 国外视频精品毛片| 国产免费一区二区三区在线观看| 在线国产精品播放| 亚洲日本成人网| 美日韩丰满少妇在线观看| 成人黄色网免费| 97婷婷大伊香蕉精品视频| 这里只有精品在线播放| 日本久久久久亚洲中字幕| 欧美视频13p| 国产欧洲精品视频| 一区二区三区动漫| 久久久久日韩精品久久久男男| 精品欧美aⅴ在线网站| 亚洲国产成人91精品| 色噜噜狠狠狠综合曰曰曰| 欧美日韩国产一区中文午夜| 亚洲精品国产品国语在线| 亚洲自拍在线观看| 欧美日韩福利视频| 亚洲精品永久免费| 国产激情综合五月久久| 中日韩午夜理伦电影免费| 日韩欧美精品免费在线| 久久久噜噜噜久久久| 97碰碰碰免费色视频| 久久精品久久久久电影| 日韩在线观看av| 欧美激情一级精品国产| 亚洲缚视频在线观看| 自拍偷拍免费精品| 美女精品视频一区| 亚洲成色www8888| 欧美性猛交xxxx黑人| 中文字幕亚洲色图| 亚洲深夜福利在线| 亚洲丁香久久久| 久久久国产一区二区| 亚洲成av人乱码色午夜| 国产精品手机播放| 亚洲影视中文字幕| 亚洲视频一区二区| 亚洲精品v欧美精品v日韩精品| 亚洲欧美日韩综合| 日韩av免费在线观看| 国产精品久久久久久影视| 亚洲黄页网在线观看| 亚洲一区二区三区四区在线播放| 91日本视频在线| 草民午夜欧美限制a级福利片| 播播国产欧美激情| 亚洲视频一区二区| 国产美女精品视频免费观看| 97福利一区二区| 国产自产女人91一区在线观看| 国产亚洲欧美aaaa| 国产精品中文久久久久久久| 成人性教育视频在线观看| 亚洲美女av在线播放|