中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站模板中企動力關(guān)鍵詞優(yōu)化seo排名

網(wǎng)站模板中企動力,關(guān)鍵詞優(yōu)化seo排名,html網(wǎng)站模板資源,網(wǎng)站建設(shè)公司新報價中介者模式介紹 定義:中介者模式是一種行為設(shè)計模式,它通過引入一個中介者對象來封裝一系列對象之間的交互。中介者使得各個對象之間不需要顯式地相互引用,從而降低了它們之間的耦合度,并且可以更方便地對它們的交互進行管理和協(xié)調(diào)…
  1. 中介者模式介紹

    • 定義:中介者模式是一種行為設(shè)計模式,它通過引入一個中介者對象來封裝一系列對象之間的交互。中介者使得各個對象之間不需要顯式地相互引用,從而降低了它們之間的耦合度,并且可以更方便地對它們的交互進行管理和協(xié)調(diào)。
    • 工作原理:系統(tǒng)中的多個對象(同事對象)之間存在復(fù)雜的相互引用和交互關(guān)系,這些關(guān)系使得系統(tǒng)變得復(fù)雜且難以維護。中介者模式將這些交互邏輯集中到一個中介者對象中,同事對象只需要和中介者對象進行通信,而不用直接與其他同事對象交互。當(dāng)一個同事對象的狀態(tài)發(fā)生變化或者需要執(zhí)行某些操作時,它通過中介者對象來通知其他相關(guān)的同事對象。
    • 類比:可以將中介者模式類比為機場的塔臺(中介者)和飛機(同事對象)之間的關(guān)系。飛機之間不需要直接通信來協(xié)調(diào)起降等操作,而是通過塔臺來傳遞信息和指令。塔臺知道每架飛機的狀態(tài)和需求,并且根據(jù)這些信息來協(xié)調(diào)飛機的行動,確保飛行安全和秩序。
  2. 角色構(gòu)成及職責(zé)

    • 中介者(Mediator)接口或抽象類:定義了同事對象與中介者進行通信的接口方法。通常包括用于通知中介者對象狀態(tài)變化的方法,以及中介者用來通知同事對象執(zhí)行操作的方法。
    • 具體中介者(Concrete Mediator)類:實現(xiàn)了中介者接口,它包含了對各個同事對象的引用,并且實現(xiàn)了協(xié)調(diào)同事對象之間交互的具體邏輯。例如,在一個聊天軟件的中介者實現(xiàn)中,具體中介者需要知道每個聊天用戶(同事對象)的信息,并且根據(jù)用戶發(fā)送的消息來轉(zhuǎn)發(fā)給其他相關(guān)用戶。
    • 同事(Colleague)接口或抽象類:定義了同事對象的基本接口,包括與中介者通信的方法。同事對象通過這些方法來向中介者發(fā)送自己的狀態(tài)變化信息或者接收中介者傳來的通知。
    • 具體同事(Concrete Colleague)類:實現(xiàn)了同事接口,每個具體同事對象代表系統(tǒng)中的一個實體,它們有自己的狀態(tài)和行為。當(dāng)自己的狀態(tài)發(fā)生變化時,通過中介者接口方法通知中介者;同時,也會接收中介者傳來的通知并執(zhí)行相應(yīng)的操作。
      在這里插入圖片描述
  3. 優(yōu)點

    • 降低耦合度:同事對象之間的直接依賴關(guān)系被轉(zhuǎn)移到中介者對象上,使得同事對象之間的耦合度大大降低。這樣,當(dāng)一個同事對象發(fā)生變化時,對其他同事對象的影響主要通過中介者來控制,減少了系統(tǒng)中復(fù)雜的連鎖反應(yīng)。
    • 易于維護和擴展:由于交互邏輯集中在中介者對象中,所以當(dāng)需要修改或擴展系統(tǒng)的交互方式時,只需要修改中介者對象的代碼,而不需要在多個同事對象中進行分散的修改。同時,添加新的同事對象也相對簡單,只需要在中介者對象中添加對新同事對象的引用和相應(yīng)的交互邏輯即可。
    • 提高代碼的復(fù)用性:中介者對象的交互邏輯可以在不同的系統(tǒng)中復(fù)用。例如,一個通用的消息轉(zhuǎn)發(fā)中介者可以應(yīng)用于多種不同的消息傳遞場景,只要同事對象遵循相同的接口與中介者進行通信。
  4. 缺點

    • 中介者可能變得復(fù)雜:如果系統(tǒng)中的同事對象較多,交互邏輯復(fù)雜,那么中介者對象可能會變得非常龐大和復(fù)雜,包含大量的協(xié)調(diào)代碼,導(dǎo)致中介者本身的維護難度增加。
    • 系統(tǒng)的分布式處理能力受限:中介者模式將交互集中在一個中介者對象上,對于一些需要分布式處理或者高度并行處理的系統(tǒng),可能不太適合,因為所有的交互都需要經(jīng)過中介者,可能會成為性能瓶頸。
  5. 應(yīng)用場景

    • 圖形用戶界面(GUI)開發(fā):在GUI系統(tǒng)中,多個控件(如按鈕、文本框、下拉菜單等)之間可能存在復(fù)雜的交互關(guān)系。例如,當(dāng)用戶在一個文本框中輸入內(nèi)容后,可能需要更新其他相關(guān)控件的顯示狀態(tài)。通過中介者模式,可以將這些控件之間的交互邏輯封裝在一個中介者對象中,使得控件之間的耦合度降低,便于維護和擴展。
    • 游戲開發(fā):在游戲中,不同的游戲角色、道具、場景元素之間可能需要進行各種交互。例如,當(dāng)一個角色撿起一個道具時,可能會觸發(fā)其他角色的反應(yīng)或者場景的變化。使用中介者模式可以有效地管理這些交互,使游戲的邏輯更加清晰。
    • 分布式系統(tǒng)中的消息傳遞:在分布式系統(tǒng)中,多個節(jié)點之間需要傳遞消息和協(xié)調(diào)工作。雖然中介者模式在分布式處理方面有一定的局限性,但在一些相對簡單的分布式消息傳遞場景中,通過一個中介者節(jié)點來轉(zhuǎn)發(fā)和協(xié)調(diào)消息,可以降低節(jié)點之間的直接通信復(fù)雜度。
  6. C++代碼示例

    • 中介者接口
      • class Mediator {
        public:virtual void notify(const std::string& sender, const std::string& event) = 0;
        };
        
    • 同事接口
      • class Colleague {
        protected:Mediator* mediator;
        public:Colleague(Mediator* m) : mediator(m) {}virtual void send(const std::string& event) = 0;virtual void receive(const std::string& sender, const std::string& event) = 0;
        };
        
    • 具體同事類A
      • class ConcreteColleagueA : public Colleague {
        public:ConcreteColleagueA(Mediator* m) : Colleague(m) {}void send(const std::string& event) override {mediator->notify("ConcreteColleagueA", event);}void receive(const std::string& sender, const std::string& event) override {if (sender == "ConcreteColleagueB") {std::cout << "ConcreteColleagueA received event '" << event << "' from ConcreteColleagueB" << std::endl;}}
        };
        
    • 具體同事類B
      • class ConcreteColleagueB : public Colleague {
        public:ConcreteColleagueB(Mediator* m) : Colleague(m) {}void send(const std::string& event) override {mediator->notify("ConcreteColleagueB", event);}void receive(const std::string& sender, const std::string& event) override {if (sender == "ConcreteColleagueA") {std::cout << "ConcreteColleagueB received event '" << event << "' from ConcreteColleagueA" << std::endl;}}
        };
        
    • 具體中介者類
      • class ConcreteMediator : public Mediator {
        private:ConcreteColleagueA* colleagueA;ConcreteColleagueB* colleagueB;
        public:void setColleagueA(ConcreteColleagueA* a) { colleagueA = a; }void setColleagueB(ConcreteColleagueB* b) { colleagueB = b; }void notify(const std::string& sender, const std::string& event) override {if (sender == "ConcreteColleagueA") {colleagueB->receive(sender, event);} else if (sender == "ConcreteColleagueB") {colleagueA->receive(sender, event);}}
        };
        
    • 使用示例
      • int main() {ConcreteMediator mediator;ConcreteColleagueA colleagueA(&mediator);ConcreteColleagueB colleagueB(&mediator);mediator.setColleagueA(&colleagueA);mediator.setColleagueB(&colleagueB);colleagueA.send("Hello from A");colleagueB.send("Hi from B");return 0;
        }
        
    • 在這個代碼示例中,Mediator 是中介者接口,定義了 notify 方法用于接收同事對象的通知。Colleague 是同事接口,包含了發(fā)送消息和接收消息的方法。ConcreteColleagueAConcreteColleagueB 是具體同事類,它們通過中介者來發(fā)送和接收消息。ConcreteMediator 是具體中介者類,它包含了對兩個具體同事對象的引用,并在 notify 方法中實現(xiàn)了根據(jù)發(fā)送者來通知相應(yīng)同事對象接收消息的邏輯。在 main 函數(shù)中,創(chuàng)建了中介者、同事對象,并將同事對象與中介者關(guān)聯(lián)起來,然后通過同事對象發(fā)送消息來演示中介者模式的消息傳遞過程。

C++代碼示例2

#include<iostream>
#include<string>
using namespace std;
class Country;
//抽象類  聯(lián)合國
class UN
{
public:virtual void delcare(string message , Country *m_country){}virtual void initcountry(Country*s1,Country*s2){};
};
//國家
class Country
{
protected:UN *m_un;
public:Country(UN* name):m_un(name){}virtual void delcare(string m_message){}};
//美國
class USA:public Country
{
public:USA(UN* name):Country(name){}void delcare(string message){cout<<"美國: "<<message<<endl;}
};
//伊拉克
class Iraq:public Country
{
public:Iraq(UN* name):Country(name){}void delcare(string message){cout<<"伊拉克:"<<message<<endl;}
};//安理會
class Security:public UN
{
private:Country *m_usa;Country *m_iraq;public:void initcountry(Country*s1 , Country*s2){m_usa = s1;m_iraq = s2;}void delcare(string message , Country *m_country){if(m_country==m_usa){m_usa->delcare(message);}else{m_iraq->delcare(message);}}
};int main()
{UN *m_sec = new Security();//創(chuàng)建安理會Country*country_usa = new USA(m_sec);//創(chuàng)建美國Country*country_iraq = new Iraq(m_sec);//創(chuàng)建伊拉克,美國和伊拉克有共同的中介者:安理會,m_secm_sec->initcountry(country_usa,country_iraq);m_sec->delcare("我要干死你" , country_usa);m_sec->delcare("來呀,cnm,互相傷害呀" , country_iraq);cout<<endl<<endl;return 0;
}
http://www.risenshineclean.com/news/65406.html

相關(guān)文章:

  • wordpress調(diào)起淘寶app百度關(guān)鍵詞優(yōu)化首選667seo
  • 網(wǎng)絡(luò)科技有限公司的簡介高州網(wǎng)站seo
  • 做網(wǎng)站沒有活中國制造網(wǎng)
  • 深圳做微信網(wǎng)站百度搜索app免費下載
  • 附近舊模板出售市場長沙seo招聘
  • 中國建設(shè)銀行廣東分行網(wǎng)站收錄情況
  • 卻持網(wǎng)站網(wǎng)店seo關(guān)鍵詞
  • 沈陽網(wǎng)站設(shè)計百度怎么注冊公司網(wǎng)站
  • dede新聞網(wǎng)站源碼百度搜索入口網(wǎng)址
  • 網(wǎng)站怎么做微博認證嗎跨境電商平臺
  • 南昌做網(wǎng)站的公司哪家好西安高端網(wǎng)站建設(shè)公司
  • 做一個網(wǎng)站要注意什么優(yōu)化是什么意思
  • 武漢企業(yè)網(wǎng)站推廣方案百度一下百度主頁
  • 看過的網(wǎng)站做記號百度站長工具抓取診斷
  • 網(wǎng)站架構(gòu)師的工作內(nèi)容最好的推廣平臺排名
  • 外貿(mào)建站 wordpress寧波網(wǎng)絡(luò)營銷公司有哪些
  • 做saas平臺網(wǎng)站sem 優(yōu)化軟件
  • 烏克蘭武裝部隊最新戰(zhàn)報廈門seo報價
  • 媒體網(wǎng)站推廣法今日世界杯比分預(yù)測最新
  • 網(wǎng)站開發(fā)配置狀態(tài)統(tǒng)計seo標(biāo)題優(yōu)化褲子關(guān)鍵詞
  • 云端商城買流量電腦優(yōu)化是什么意思
  • 福永網(wǎng)站推廣百度域名購買
  • 百度刷排名seo軟件seo網(wǎng)絡(luò)推廣報價
  • 工作室網(wǎng)站開發(fā)鳴蟬智能建站
  • 站酷設(shè)計網(wǎng)站官網(wǎng)入網(wǎng)絡(luò)廣告的收費模式有哪些
  • 連云港專業(yè)網(wǎng)站優(yōu)化想找搜索引擎優(yōu)化
  • 下載網(wǎng)站開發(fā)網(wǎng)站如何優(yōu)化一個關(guān)鍵詞
  • 服裝設(shè)計網(wǎng)站素材如何做seo搜索引擎優(yōu)化
  • 網(wǎng)站頁面錨點怎么做怎么做電商新手入門
  • 華夏業(yè)務(wù)員做單的網(wǎng)站堅持