#include<iostream>
#include<string>
#include<vector>
#include<cstdlib> using namespace std;
/*
mediator 模式
问题:重在理解,结构图见网络。
*/
class colleage
{
private:
string name;
string content;
public:
colleage(string n = " "):name(n)
{}
void set_name(string name)
{
this->name = name;
} string get_name()
{
return this->name;
} void set_content(string content)
{
this->content = content;
} string get_content()
{
return this->content;
} virtual void talk()
{ }
}; class monitor: public colleage
{
public:
monitor(string n = " "):colleage(n)
{ } void talk()
{
cout <<"monitor says:"<<get_content()<< endl;
} }; class tuanzishu: public colleage
{
public:
tuanzishu(string n = " "):colleage(n)
{ } void talk()
{
cout <<"tuanzishu say:"<<get_content()<< endl;
} }; class studentA: public colleage
{ public:
studentA(string n = " "):colleage(n)
{ } void talk()
{
cout <<"studentA say:"<< get_content()<< endl;
} }; class studentB: public colleage
{ public:
studentB(string n = " "):colleage(n)
{ } void talk()
{
cout <<"studentB say:"<<get_content()<< endl;
} }; class mediator
{
public:
vector<colleage*> studentlist;
virtual void add_students(colleage *student)
{
studentlist.push_back(student);
} }; class QQmediator: public mediator
{
public:
virtual void notify(colleage *student)
{
student->talk();
for(int i = 0; i < studentlist.size(); i++)
{
if(student != studentlist[i])
{
studentlist[i]->talk();
}
}
}
virtual void chart(colleage *student1, colleage *student2)
{
student1->talk();
student2->talk();
} }; int main()
{//初始化
QQmediator qq;
monitor studentmonitor("banzhang");
tuanzishu studenttuanzishu("tuanzishu");
studentA studentXM("xiaoming");
studentB studentXH("xiaohong"); //向中介者中添加同学 qq.add_students(&studentmonitor);
qq.add_students(&studenttuanzishu);
qq.add_students(&studentXM);
qq.add_students(&studentXH); //设置各位同学的回复 studentmonitor.set_content("班会现在开始,请大家积极发言。");
studenttuanzishu.set_content("班会主题是XXXXX");
studentXM.set_content("我认为XXXXX");
studentXH.set_content("我不认为XXXX"); //班长通知后开始 cout <<"班长发布一个通知后的情景:"<< endl;
qq.notify(&studentmonitor); //同学私聊 cout <<"同学私聊的情景:"<< endl;
studentXM.set_content("你觉得今天的班会怎么样?");
studentXH.set_content("一般般吧,还是老样子,没解决什么问题");
qq.chart(&studentXM,&studentXH); system("pause");
return 0;
}

总结: 无。详见参考:点击打开链接

最新文章

  1. opendaylight的Beryllium安装
  2. mongodb中的副本集搭建实践
  3. java网络---查找Internet
  4. MVC中Controller和Action讲解上篇
  5. 【HDOJ】1401 Solitaire
  6. FileWriter类的flush方法的作用
  7. iOS常用的封装方法
  8. 利用jQuery接受和处理xml数据
  9. 寻找数列中第k大的数算法分析
  10. [转]Qt5.0 连接 webkit 错误解决
  11. 添加Metasploit-payload到已有的Android项目中
  12. JavaScript中对象数组 作业 题目如下
  13. Python中使用多进程来实现并行处理的方法小结
  14. 蓝桥杯试题 k倍区间(dp)
  15. 哨兵模式下,master选举关键点
  16. sitecore系列教程之Sitecore个性化-体验概况概述
  17. ALGO-22_蓝桥杯_算法训练_装箱问题(DP)
  18. 联机分析处理ROLAP、MOLAP和HOLAP区别(转)
  19. collections集合的总括。
  20. 提供openssl -aes-256-cbc兼容加密/解密的简单python函数

热门文章

  1. JAVAC 命令使用方法
  2. Git学习笔记总结和注意事项
  3. Cool Edit Pro 2.0详细教程(转)
  4. Vmware Briged方式使虚拟机上网
  5. c语言,链表
  6. Swift - 如何实现字符串的HMAC_SHA1加密
  7. CodeForces Round #173 (282E) - Sausage Maximization 字典树
  8. android的四种加载模式
  9. 关于如何实现程序一天只启动一次的想法(C++实现)
  10. Eclipse Package Explorer视图无法打开