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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

發布時間:2025/6/17 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、中介者模式簡介
  • 二、中介者模式適用場景
  • 三、中介者模式優缺點
  • 四、中介者模式 與 觀察者模式
  • 五、中介者模式 代碼示例
    • 1、聊天室
    • 2、用戶
    • 3、運行實例





一、中介者模式簡介



中介者模式 : 定義 一個 封裝一組對象 如何 交互對象 ;

通過使 對象 明確地 相互引用 , 促進 松散耦合 , 允許 獨立改變 它們之間的 交互 ;


中介者模式類型 : 行為型 ;





二、中介者模式適用場景



中介者模式適用場景 :

  • 引用關系復雜 : 系統中 對象之間 存在 復雜的 引用關系 , 產生的 相互依賴關系 結構混亂 , 難以理解 ;
  • 改變行為 : 交互的 公共行為 , 如果 需要 改變行為 , 可以 增加新的 中介者 類 ; ( 通過增加新的中介者類 , 達到擴展的目的 )

多人聊天室 就是一個 中介者模式 場景 , 一個人發言時 , 需要傳達給每個人 , 如果沒有聊天室 , 需要對每個人都說一遍 , 如果有中介者 , 就由中介者負責將發言傳達給每個人 ;





三、中介者模式優缺點



中介者模式優點 :

  • 降低復雜度 :一對多 轉化為 一對一 , 降低了 程序復雜程度 ;
    如 : 聊天室中有 888 個人 , 如果要一對一進行交互 , 需要交互 777 次 ; 使用了中介者模式后 , 變成一對一 , 只要將交互內容交給中介者就可以了 , 中介者負責與其余 777 人進行交互 ;

  • 解耦 : 實現了 類之間的解耦 操作 ;
    如 : 聊天室中有 888 個人 , 每個人都需要耦合另外 777 個 , 即持有另外 777 個對象 , 使用了中介者模式之后 , 888 個人只需要持有 中介者 對象即可 , 888 個人之間不再進行相互耦合 ;


中介者模式缺點 : 如果在 業務場景 中 中介者 數量過多 , 會導致系統 復雜性增加 ;
( 設計模式之間 , 也是一個相互平衡的過程 )





四、中介者模式 與 觀察者模式



中介者模式 與 觀察者模式 :

這兩個模式經常 結合起來使用 , 使用 觀察者模式 實現 中介者模式 中 , 角色間的通信 ;





五、中介者模式 代碼示例



業務場景 : 聊天室 , 多人在聊天室中聊天 ;

聊天室 實例 只有一個 , 用戶可以創建多個 , 并持有 聊天室 引用 ;


1、聊天室


package mediator;/*** 聊天室 , 中介者模式中的中介者* 該類實例在整個業務場景中只有一個*/ public class ChatRoom {public static void showMessage(User user, String message){System.out.println(user.getName() + " : " + message);} }

2、用戶


package mediator;/*** 中介者模式中 與 中介者 交互的對象* 該類實例對象 , 需要創建多個*/ public class User {private String name;public User(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}/*** 主要業務邏輯 , 群聊時發送消息* @param message*/public void sendMessage(String message) {ChatRoom.showMessage(this, message);} }

3、運行實例


package mediator;public class Main {public static void main(String[] args) {User tom = new User("Tom");User jerry = new User("Jerry");User trump = new User("Trump");tom.sendMessage("I'm cat");jerry.sendMessage("I'm mouse");trump.sendMessage("MAGA");} }

總結

以上是生活随笔為你收集整理的【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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