#include<iostream>
#include<string>
#include<vector>
class Task{
public:
Task(const std::string& content):content_(content){}
void show(){
std::cout<<content_<<std::endl;
}
private:
std::string content_;
}
class AbObserve{
public:
virtual void accpt(const Task &task)=0;
class Observe{
public:
Observe(const std::string& name):name_(name){}
void accpt(const Task &task) override{
std::cout<<name_<<accpt<<std::endl;
task.show();
}
private:
std::string name_;
}
class AbSubject{
public:
virtual void attach(AbObserve& observe)=0;
virtual void notify(const Task& task)=0;
}
class Subject{
public:
void attach(AbObserve* observe) override{
observes.push_back(observe);
}
void notify(const Task& task) override{
for(AbObserve* observe:observes_){
observe->accpt(task);
}
}
private:
vector<AbObserve*> observes_;
}
Subject subject;
AbObserve* Gusee=new Observe("Gusee");
subject.attach(Gusee);
subject.notify(Task("sky"));
观察者模式
最新推荐文章于 2024-09-12 09:57:29 发布