zoukankan      html  css  js  c++  java
  • 设计模式12——中介者模式

    中介者模式中,个体与个体之间不需要发生直接关联,而是只需要与中介者进行交互,并由中介完成一系列任务。

    Mediator.h内容

     1 #ifndef Mediator_H_H
     2 #define Mediator_H_H
     3 
     4 #include <iostream>
     5 using namespace std;
     6 
     7 class Student;
     8 
     9 class Mediator
    10 {
    11 public:
    12     Mediator() : src(NULL), target(NULL) {}
    13     void send(string strMessage);
    14     void setTarget(Student *target0) { target = target0; }
    15 
    16 private:
    17     Student *src, *target;
    18 };
    19 
    20 class Student
    21 {
    22 public:
    23     Student() : mediator(NULL) {}
    24     virtual void recvMessage(string strMessage) = 0;
    25     virtual ~Student() {}
    26     void sendMessage(Student *student, string strMessage){
    27         mediator->setTarget(student);
    28         mediator->send(strMessage);
    29     }
    30     void setMediator(Mediator *mediator0) { mediator = mediator0; }
    31 
    32 protected:
    33     Mediator *mediator;
    34 
    35 };
    36 
    37 class Student1 : public Student
    38 {
    39 public:
    40     virtual void recvMessage(string strMessage){
    41         cout << "Student1 recv: " << strMessage << endl;
    42     }
    43 };
    44 
    45 class Student2 : public Student
    46 {
    47 public:
    48     virtual void recvMessage(string strMessage){
    49         cout << "Student2 recv: " << strMessage << endl;
    50     }
    51 
    52 };
    53 
    54 
    55 void Mediator::send(string strMessage)
    56 {
    57     target->recvMessage(strMessage);
    58 }
    59 
    60 
    61 void MediatorTest()
    62 {
    63     Student *student1 = new Student1();
    64     Student *student2 = new Student2();
    65     Mediator *mediator = new Mediator();
    66     student1->setMediator(mediator);
    67     student2->setMediator(mediator);
    68 
    69     student1->sendMessage(student2, "How are you?");
    70     student2->sendMessage(student1, "Very well, Thank you!");
    71 
    72     delete mediator;
    73 
    74     delete student1;
    75     delete student2;
    76 
    77 }
    78 
    79 
    80 #endif

    运行结果:

    创建两个student,他们通过中介者实现了交互过程。

  • 相关阅读:
    python之九九乘法表
    python之生成随机密码
    selenium以及浏览器驱动下载安装
    Monkey命令
    Android SDK Manager仅有一个版本的问题
    截图工具无法使用解决方法
    jmeter服务器监控插件指标简单说明
    mysql字符集小结
    mysql创建新的用户及flush privileges解析
    MySql添加远程超级管理员用户
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3983341.html
Copyright © 2011-2022 走看看