condition.cpp
来自「自己写的c++实现的headfirst中的设计模式」· C++ 代码 · 共 106 行
CPP
106 行
/* *观察者模式
*/
#include <iostream>
#include <vector>
using namespace std;
class obviour
{
public:
virtual void update(const int a,const int b)=0;
//virtual void display()=0;
};
class condition_a:public obviour
{
private:
int data_a;
public:
void update(const int a,const int b)
{
data_a=a;
}
void display()
{
cout << data_a<<endl;
}
};
class sum:public obviour
{
private:
int data_a;
int data_b;
public:
void update(const int a,const int b)
{
data_a=a;data_b=b;
}
void display()
{
cout << data_a+data_b<< endl;
}
};
class dataCenter
{
private:
vector<obviour*> obviours; //指针list
int data_a;
int data_b;
public:
void regist (obviour* ob)
{
obviours.push_back(ob);
update(); //注册既更新
}
void setData(const int a,const int b)
{
data_a=a;data_b=b;
update();
}
void update()
{
unsigned int i;
for(i=0;i<obviours.size();i++)
{
obviours[i]->update(data_a,data_b);
}
}
dataCenter(int a,int b)
{
data_a=a;data_b=b;
}
};
void condition_main()
{
dataCenter data(1,5);
//obviour *ca=new condition_a;
//obviour *ab=new sum;
condition_a ca;
sum ab;
data.regist(&ca);
data.regist(&ab);
ca.display();
ab.display();
data.setData(2,1);
ca.display();
ab.display();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?