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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式--中介者(Mediator)模式

發(fā)布時(shí)間:2025/3/21 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式--中介者(Mediator)模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

模式定義

用一個(gè)中介對象來封裝(封裝變化)一系列的對象交互,中介者使各對象不需要顯示的相互引用,從而使其耦合松散(管理變化),而且可以獨(dú)立地改變它們之間的交互

類圖

應(yīng)用場景

當(dāng)多個(gè)對象互相關(guān)聯(lián)交互并存在復(fù)雜的引用關(guān)系時(shí),且對新需求需要進(jìn)行大量更改時(shí)使用中介者模式解耦合

優(yōu)點(diǎn)

可以避免相互交互的對象之間的緊耦合引用關(guān)系,從而更好地抵御變化

要點(diǎn)總結(jié)

要點(diǎn)總結(jié)

  • 將多個(gè)對象間復(fù)雜的關(guān)聯(lián)關(guān)系解耦,Mediator模式將多個(gè)對象間的控制邏輯進(jìn)行集中管理,變“多個(gè)對象互相關(guān)聯(lián)”為“多個(gè)對象和一個(gè)中介者關(guān)聯(lián)”,簡化了系統(tǒng)的維護(hù),抵御了可能的變化
  • 隨著控制邏輯的復(fù)雜化,Mediator具體對象的實(shí)現(xiàn)可能相當(dāng)復(fù)雜,這時(shí)候可以對Mediator對象進(jìn)行分解處理
  • Facade模式是解耦系統(tǒng)間(單向)的對象關(guān)聯(lián)關(guān)系,Mediator模式是解耦系統(tǒng)內(nèi)各個(gè)對象之間(雙向)的關(guān)聯(lián)關(guān)系

Go語言代碼實(shí)現(xiàn)

工程目錄

mediator.go

package Mediatorimport "fmt"type Mediator interface {Communicate (who string) }type WildStallion interface {SetMediator(mediator Mediator) }type Bill struct {mediator Mediator } func (b * Bill) SetMediator(mediator Mediator) {b.mediator = mediator }func (b * Bill) Respond () {fmt.Println("bill what ?")b.mediator.Communicate("bill") }type Ted struct {mediator Mediator }func (t *Ted) Talk () {fmt.Println("Ted : Bill?")t.mediator.Communicate("Ted") }func (t *Ted) SetMediator(mediator Mediator) {t.mediator = mediator }func (t *Ted) Respond() {fmt.Println("Ted:how are you today?") } type ConcreteMediator struct {BillTed }func NewMediator() *ConcreteMediator {mediator := &ConcreteMediator{}mediator.Bill.SetMediator(mediator)mediator.Ted.SetMediator(mediator)return mediator }func (m *ConcreteMediator) Communicate(who string) {if who == "Ted" {m.Bill.Respond()}else {m.Ted.Respond()} }

mediator_test.go

package Mediatorimport "testing"func TestNewMediator(t *testing.T) {mediator := NewMediator()mediator.Ted.Talk() } 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的设计模式--中介者(Mediator)模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。