[瞎掰]单实例的应用

来源:互联网 发布:windows系统还原功能 编辑:程序博客网 时间:2024/06/18 15:13

之前在其它的项目看到过单实例的应用,当时不以为然,只觉得是个小技巧而已。

在项目中发现需要用到,查看资料,才发现是设计模式的一种。

以下为对此的瞎掰,挖坑。。。

需求描述:

在项目中实现网络的自发现后,需要维护起一段数据用来存放从网络获取的IP地址以及设备的网络别名。

因为每次都要重新获取,故不使用数据库的形式,单纯的用网络类的私有变量来存放。

在界面中,需要将获取的IP数据以表格形式描述,但在类外访问数据时,遇到问题。

即每次访问时都应该为同一个类的数据,但在调用时又获取不到类的实例。

故想到让整个类在全局环境中都只存在一个唯一实例,这样就可以随时获取实例进行类的调用。

class Net{public:    static Net *getInstance();pravite:    static Net *instance; };static Net *Net::getInstance(){    if(instance == NULL)    {        instance = new Net;        return instance;    }    return instance;}

用一个静态私有变量 instance来表示唯一的实例

在每次获取实例的时候,先判断实例是否为空,如果是,表示还未创建,则创建后再返回

如果不为空,表示已经创建,直接返回

这里用到的C++静态成员变量的性质,即类的静态成员变量是所有实例共用的

挖坑到此,想到继续填。。。