微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单例模式

看单例模式的例子:
C/C++ code
   
   
#include < iostream > class Singleton{ private : Singleton( int i = 0 ):val(i){ // 构造函数私有 std::cout << " constructor,member val = " << val << std::endl; } int val; static Singleton * ins; public : static Singleton * instance(){ 工厂方法 return ins; } int getVal(){ return val; } void setVal( int i){ val = i; } virtual ~ Singleton(){ if (ins){ delete ins; std::cout << destructor " << std::endl; } } }; Singleton * Singleton::ins = new Singleton( 10 ); int main(){ Singleton * clienta = Singleton::instance(); Singleton * clientb = Singleton::instance(); std::cout << adress clienta: " << clienta << std::endl; std::cout << adress clientb: " << clientb << std::endl; return 0 ; }

  运行结果:
Perl code
 
 $ g++ -Wall singleton.cpp -o singleton 
 $ ./singleton 
 constructor,member val = 10 
 adress clienta: 0x804a008 
 adress clientb: 0x804a008 
 

  可见调用两次instance()只调用了一次构造函数,只产生了一个对象,指针clienta和clientb存储的是同一个对象的地址。这就是单例模式,通过将类的构造函数设为private,保证只能有一个对象存在。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐