之前在其它的项目看到过单实例的应用,当时不以为然,只觉得是个小技巧而已。
在项目中发现需要用到,查看资料,才发现是设计模式的一种。
以下为对此的瞎掰,挖坑。。。
需求描述:
在项目中实现网络的自发现后,需要维护起一段数据用来存放从网络获取的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++静态成员变量的性质,即类的静态成员变量是所有实例共用的
挖坑到此,想到继续填。。。