日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中介者模式分析、结构图及基本代码

發布時間:2023/11/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中介者模式分析、结构图及基本代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


定義:用一個中介對象來封裝一系列的對象交互。

中介者使各對象不須要顯式地相互引用。從而使其耦合松散,并且能夠獨立地改變它們之間的交互。


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


長處:中介者的出現降低了各個對象的耦合,使得能夠獨立地改變和復用各個對象類和中介類,比方不論什么國家的改變不會影響到其它國家,而僅僅是與安理會發生變化。其次,因為把對象怎樣寫作進行了抽象,將中介作為一個獨立的概念并將其封裝在一個對象中。這樣關注的對象就從對象各自本身的行為轉移到它們之間的交互上來,也就是站在一個更宏觀的角度上看待系統。比方巴以沖突。本來僅僅能算是國與國之間的矛盾,因此各自的看法可能都比較狹隘,但站在聯合國安理會的角度,就能夠從全球化、也更客觀角度來看待這個問題。在調停和維和上作出貢獻。


缺點:因為中介者控制了集中化。于是就把交互復雜性變為了中介者的復雜性。這就使得中介者會變得比不論什么一個對象都復雜。
結構圖:


基本代碼:

using System;
using System.Collections.Generic;
using System.Text;

namespace 中介者模式
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? ConcreteMediator m = new ConcreteMediator();

??????????? ConcreteColleague1 c1 = new ConcreteColleague1(m);
??????????? ConcreteColleague2 c2 = new ConcreteColleague2(m);

??????????? m.Colleague1 = c1;
??????????? m.Colleague2 = c2;

??????????? c1.Send("吃過飯了嗎?");
??????????? c2.Send("沒有呢,你打算請客?");

??????????? Console.Read();
??????? }
??? }

??? abstract class Mediator
??? {
??????? public abstract void Send(string message, Colleague colleague);
??? }

??? class ConcreteMediator : Mediator
??? {
??????? private ConcreteColleague1 colleague1;
??????? private ConcreteColleague2 colleague2;

??????? public ConcreteColleague1 Colleague1
??????? {
??????????? set { colleague1 = value; }
??????? }

??????? public ConcreteColleague2 Colleague2
??????? {
??????????? set { colleague2 = value; }
??????? }

??????? public override void Send(string message, Colleague colleague)
??????? {
??????????? if (colleague == colleague1)
??????????? {
??????????????? colleague2.Notify(message);
??????????? }
??????????? else
??????????? {
??????????????? colleague1.Notify(message);
??????????? }
??????? }
??? }

??? abstract class Colleague
??? {
??????? protected Mediator mediator;

??????? public Colleague(Mediator mediator)
??????? {
??????????? this.mediator = mediator;
??????? }
??? }

??? class ConcreteColleague1 : Colleague
??? {
??????? public ConcreteColleague1(Mediator mediator)
??????????? : base(mediator)
??????? {

??????? }

??????? public void Send(string message)
??????? {
??????????? mediator.Send(message, this);
??????? }

??????? public void Notify(string message)
??????? {
??????????? Console.WriteLine("同事1得到信息:" + message);
??????? }
??? }

??? class ConcreteColleague2 : Colleague
??? {
??????? public ConcreteColleague2(Mediator mediator)
??????????? : base(mediator)
??????? {
??????? }

??????? public void Send(string message)
??????? {
??????????? mediator.Send(message, this);
??????? }

??????? public void Notify(string message)
??????? {
??????????? Console.WriteLine("同事2得到信息:" + message);
??????? }
??? }
}

轉載于:https://www.cnblogs.com/wzzkaifa/p/7367442.html

總結

以上是生活随笔為你收集整理的中介者模式分析、结构图及基本代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。