Mediator. h
# Pragma once
# Include <qdebug>
Class cmediator;
Class cCountry
{
Public:
Virtual void setmediator (cmediator * mediator) = 0;
Virtual void sendmessage (const qstring & message) = 0;
Virtual void getmessage (const qstring & message) = 0;
Qstring revmessage () const {return m_revmessage ;}
Protected:
Cmediator * m_mediator;
Qstring m_revmessage;
};
Class cchina: Public cCountry
{
Public:
Cchina (){}
Void setmediator (cmediator * mediator)
{
M_mediator = Mediator;
}
Void sendmessage (const qstring & message );
Void getmessage (const qstring & message );
};
Class cjapan: Public cCountry
{
Public:
Cjapan (){}
Void setmediator (cmediator * mediator)
{
M_mediator = Mediator;
}
Void sendmessage (const qstring & message );
Void getmessage (const qstring & message );
};
Class cmediator
{
Public:
Virtual void send (const qstring & message, cCountry * Country) = 0;
};
Class Cun: Public cmediator
{
Public:
Void send (const qstring & message, cCountry * Country)
{
If (Country = m_china)
{
M_japan-> getmessage (Message );
}
Else
{
M_china-> getmessage (Message );
}
}
Void setchina (cCountry * China) {m_china = China ;}
Void setjapan (cCountry * Japan) {m_japan = Japan ;}
PRIVATE:
CCountry * m_china;
CCountry * m_japan;
};
Mediator. cpp
# Include "mediator. H"
Void cchina: sendmessage (const qstring & message)
{
M_mediator-> send (message, this );
}
Void cchina: getmessage (const qstring & message)
{
M_revmessage = message;
}
Void cjapan: sendmessage (const qstring & message)
{
M_mediator-> send (message, this );
}
Void cjapan: getmessage (const qstring & message)
{
M_revmessage = message;
}
Main. cpp
# Include <qapplication>
# Include "mediator. H"
int main (INT argc, char ** argv)
{< br> qapplication app (argc, argv);
Cun * Media = new Cun;
cCountry * China = new cchina;
China-> setmediator (media);
cCountry * Japan = new cjapan;
Japan-> setmediator (media);
media-> setchina (China );
media-> setjapan (Japan);
Japan-> sendmessage ("Diao Yu Dao Shi wo men de ");
Qstring str_japanrev = China-> revmessage ();
China-> sendmessage ("Gun Dan ");
Qstring str_chinarev = Japan-> revmessage ();
Return app.exe C ();
}