設計模式 中介模式

2022-01-16 03:50:41 字數 1915 閱讀 1780

今天,我們來學習下中介者模式,所謂中介者模式,就是充當乙個中間人的角色,讓兩種不同領域的人溝通;把這句話轉換為軟體角色就是讓有交集的兩個類變得沒有任何關係。沒有關係就表明了兩個類之間的耦合度為零,這就是我們需要的最終奧義,也是中介者模式要達到的目的。

首先第一步,抽象乙個中介者,這個中介者就幹一件事,傳遞資訊,所以,**如下

abstract

class

mediator

mediator類就是我們抽象的乙個中介者類,它有乙個send方法,方法引數有兩個,乙個message和乙個colleague,我們想一下,乙個中介者是如何傳遞訊息的,首先,它得到乙個需要傳遞訊息的人,然後把這個人的訊息傳遞給更多的人,所以,這裡的colleague型別就是我們抽象出來的人的類

abstract

class

colleague

}

上面就是我們抽象的colleague類,人當然需要中介者才能完成它想要完成的任務,所以,這裡就是通過建構函式注入的方式獲取乙個中介者。好了,所有的抽象都已完成,接下來我們就來實現他們吧

首先,我們先實現兩個同事類吧

class

concretecolleague1 : colleague

public

void send(string

message)

public

void notify(string

message)

}class

concretecolleague2 : colleague

public

void send(string

message)

public

void notify(string

message)

}

concretecolleague1類和concretecolleague2類就是我們實現的同事類,他們都繼承colleague類,到了這裡可能會有點蒙,我們來梳理一下,首先是send方法,這裡是在做什麼事呢?我們看到它的內部是呼叫了send方法,這個send方法就是我們抽象的中介者的send方法,然後把訊息和自身傳遞給中介者,供中介者使用,然後notify方法就是輸入自身的互動資訊。接下來,我們要實現中介者抽象了,我們需要乙個具體的中介者來幫忙做事。

class

concretemediator : mediator

}public

concretecolleague2 colleague2

}public

override

void send(string

message, colleague colleague)

}

我們可以看到,concretemediator類中有兩個屬性和乙個方法,根據我們生活的常識來說,乙個具體的中介者,是不是需要認識雙發需要交流的人,所以這裡我們也需要獲取concretecolleague1和concretecolleague2,然後重寫父類mediator的send方法,到這裡我們的中介者模式所以骨架就都完成了,接下來,讓我們來看看如何使用它。

class

program

}

首先,第一步,我們先new乙個中介者出來,然後再new兩位同事出來,我們new出來的這兩位同事肯定是要和中介者認識啊(所以new需要乙個中介者物件m),然後他們都會各自去找我們的中介者(把自身物件傳遞給中介者),最後,他們就可以傳送訊息通訊了,我們看執行結果

本來兩個不相干的類,通過中介者模式可以實現互動,這是多麼的神奇啊是吧。

官方說明中介者模式概述:可以把系統的網狀結構變成以中介者為中心的星型結構。這樣轉變的好處就是保證了物件結構上的穩定,系統的結構不會因為引入新物件而帶來大量的修改工作。

中介設計模式

中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使 易於維護。中介者模式屬於行為型模式。優點 1 降低了類的複雜度,將一對多轉化成了一對一。2 各個類之間的解耦。3 符合迪公尺特原則。缺點 中...

設計模式 中介者模式

假如沒有總經理,下面三個部門 財務部,市場部,研發部。財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣 市場部要接新專案,需要研發部處理技術 需要財務部出資金。市場部跟各個部門打交道。雖然只有三個部門,但是關係非常亂。實際上,公司都有總經理。各個部門有什麼事情都通報到總經理這裡,總經理再通知...

設計模式 中介者模式

在我們的日常生活中經常需要購買各種各樣的東西,房子 車子 生活用品等等。那麼我們並不會對各個產品都了解,所以銷售人員應運而生,他們了解產品,然後他們根據你的需求在向你們推薦符合你們要求的產品。這些銷售人員就相當於中介,處於客戶和產品之間,為你們搭橋牽線。這就是這篇需要講述的乙個設計模式 中介者模式。...