1 Star 1 Fork 10

李建成/geoda

forked from geoda/geoda_mirror 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Observable.h 2.25 KB
一键复制 编辑 原始数据 按行查看 历史
Xun Li 提交于 2015-08-06 13:57 . migrate from 1.7.45 geodacenter repository
/**
* GeoDa TM, Copyright (C) 2011-2015 by Luc Anselin - all rights reserved
*
* This file is part of GeoDa.
*
* GeoDa is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GeoDa is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/** Observable Interface
NOTE: We do not recommend using this interface directly. Rather, we
will keep this class here as a sort of template to follow. Instead,
one should define new Observer / Observable classes, for example:
Model / ModelObserver. The declartion of Model and ModelObserver might then
look like:
class Model {
public:
virtual void registerObserver(ModelObserver* o);
virtual void removeObserver(ModelObserver* o);
virtual void notifyObservers();
};
class ModelObserver {
public:
virtual void update(Model* o) = 0;
};
A concrete class, say Foo, that wants observe Model would then implement
the ModelObserver interface. Say Foo also wanted to be an observer of
the Simulation class. We would then define another interface
SimulationObserver. Foo would then implement update(Model* o) and
update(Simulation* o) and the compiler will take care of making
sure the correct update method is called.
If we had decided to directly use the Observable/Observer interface, the
class Foo would implement only update(Observable* o), but then the update
method would have to use dynamic casting to determine which of the two
Observable classes actually called update. This is very poor programming
practice.
**/
#ifndef __GEODA_CENTER_OBSERVABLE_H__
#define __GEODA_CENTER_OBSERVABLE_H__
class Observer; // forward declaration
class Observable {
public:
virtual void registerObserver(Observer* o) = 0;
virtual void removeObserver(Observer* o) = 0;
virtual void notifyObservers() = 0;
};
#endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Lee_Jiancheng/geoda.git
[email protected]:Lee_Jiancheng/geoda.git
Lee_Jiancheng
geoda
geoda
master

搜索帮助