软件开发常用设计模式?单例模式总结
作者:网络转载 发布时间:[ 2015/4/8 14:02:17 ] 推荐标签:软件测试技术 用例设计 测试用例
完整的单例类实现代码如下:
class Singleton
{
public:
//get 方法
static Singleton * getInstance(){
if (NULL == instance) {
lock();
//判断单例否
if (NULL == instance) {
instance = new Singleton();
}
unlock();
}
//返回一个实例化的对象
return instance;
}
//c++ 嵌套的内部类,作用是删除单例类对象,Garbage被定义为Singleton的私有内嵌类,以防该类被在其他地方滥用。
class Garbage
{
public:
~Garbage(){
if (Singleton::instance != NULL) {
cout << "单例类的实例被析构了" << endl;
delete Singleton::instance;
}
}
};
private:
//单例类中定义一个这样的静态成员变量,而它的工作是在析构函数中删除单例类的实例,利用程序在结束时析构全局变量的特性,选择终的释放时机;
static Garbage garbage;
//声明一个静态的实例
static Singleton *instance;
//单例类的私有构造函数
Singleton(){
cout << "调用了单例类的构造函数" << endl;
}
//单例类的私有析构函数
~Singleton(){
cout << "调用了单例类的析构函数" << endl;
}
//把拷贝构造函数声明为私有,可以禁止外人拷贝对象,也不用实现它,声明私有即可
Singleton(const Singleton ©);
//把赋值运算符重载为私有的,防止对象之间的赋值操作
Singleton & operator=(const Singleton &other);
};
//初始化内部似有泪的静态变量,目睹是启动删除的析构函数,如果不初始化,不会被析构
//内部类可以访问外部类的私有成员,外部类不能访问内部类的私有成员!
Singleton::Garbage Singleton::garbage;
//初始化instance为 null
Singleton * Singleton::instance = NULL;
int main(void)
{
Singleton *a = Singleton::getInstance();
Singleton *b = Singleton::getInstance();
Singleton *c = Singleton::getInstance();
if (a == b) {
cout << "a = b" << endl;
}
return 0;
}
单例类de测试,两个方法:
1、实例化多个对象,看调用了几次构造函数,如果只调用一次,说明只创建一个实例
2、单步跟踪,查看对象的地址,是否一样,一样则为一个对象
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南