#include "ZeRenLianMoShi.h"
int main()
{
std::cout << "欢迎东哥来到设计模式的世界!\n";
RecipientBase* recipient = new CompentRecipient("处理1");
RecipientBase* recipient1 = new CompentRecipient1("处理2");
recipient1->setNextRecipient(recipient);
RecipientBase* recipient2 = new CompentRecipient2("处理3");
recipient2->setNextRecipient(recipient1);
recipient2->handle("处理1");
recipient2->handle("处理2");
recipient2->handle("处理3");
}
#pragma once
#include <iostream>
#include <string>
using namespace std;
class RecipientBase
{
public:
RecipientBase() {}
~RecipientBase() {}
virtual void setNextRecipient(RecipientBase* rec) {}
virtual void handle(string cmd) {}
RecipientBase* m_rec = nullptr;
};
class CompentRecipient : public RecipientBase {
public:
CompentRecipient(string cmd) {
m_cmd = cmd;
};
~CompentRecipient() {}
void setNextRecipient(RecipientBase* rec) {
m_rec = rec;
}
void handle(string cmd) {
if (cmd == m_cmd) {
cout << "CompentRecipient 处理函数处理对象" << endl;
}
else {
if (m_rec) {
m_rec->handle(cmd);
}
}
}
private:
string m_cmd;
};
class CompentRecipient1 : public RecipientBase {
public:
CompentRecipient1(string cmd) {
m_cmd = cmd;
};
~CompentRecipient1() {}
void setNextRecipient(RecipientBase* rec) {
m_rec = rec;
}
void handle(string cmd) {
if (cmd == m_cmd) {
cout << "CompentRecipient1 处理函数处理对象" << endl;
}
else {
if (m_rec) {
m_rec->handle(cmd);
}
}
}
private:
string m_cmd;
};
class CompentRecipient2 : public RecipientBase {
public:
CompentRecipient2(string cmd) {
m_cmd = cmd;
};
~CompentRecipient2() {}
void setNextRecipient(RecipientBase* rec) {
m_rec = rec;
}
void handle(string cmd) {
if (cmd == m_cmd) {
cout << "CompentRecipient2 处理函数处理对象" << endl;
}
else {
m_rec->handle(cmd);
}
}
private:
string m_cmd;
};
欢迎东哥来到设计模式的世界!
CompentRecipient 处理函数处理对象
CompentRecipient1 处理函数处理对象
CompentRecipient2 处理函数处理对象