快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

亅亅千炮捕鱼有漏洞吗:设计模式观察者模式(C++)



作者:刘勉刚 E-mail:liumgj@163.com

察看者模式是利用异常广泛的设计模式之一,前面已经用C#实现了,下面是C++的实现,在C++实现中,C++中没有接口的观点,然则可以用抽象类类代替Java或C#中的接口,在C++中抽象类中从派生类中抽象出来的函数(措施),必须定义成纯虚函数,这样在后面的应用中才可以经由过程基类的指针来造访这些函数,亅亅千炮捕鱼有漏洞吗面向工具的说话中有个特征,多态只能造访两者中共有的部分。

#include

#include

#include

using namespace std;

class Observer;

class Subject

{

public:

virtual void attach(Observer *o)=0;

virtual void chang亅亅千炮捕鱼有漏洞吗e()=0;

virtual void setWeather(string str)=0;

virtual string getWeather()=0;

};

class Observer

{

public:

virtual string getName()=0;

virtual void update(Subject *s)=0;

};

class Earth:public Subject

{

private:

string weather;

list

*l;

public:

Earth()

{

l =亅亅千炮捕鱼有漏洞吗 new list

();

}

void attach(Observer *o)

{

this->l->push_back(o);

};

void change()亅亅千炮捕鱼有漏洞吗

{

for(list

::iterator it=l->begin();it!=l->end();++it)

{

(*it)->update(this);

}

};

void setWeather(string str)

{

this->weather=str;

change();

};

string getWeather()

{

return this->weather;

};

};

class Satellite:public Observer

{

private:

string name;

public:

Satellite(string str)

{

name=str;

}

string getName()

{

return name;

};

void updat亅亅千炮捕鱼有漏洞吗e(Subject *s)

{

cout〈〈this->getName()+" "+s->getWeather()

您可能还会对下面的文章感兴趣: