设计模式之十七:单例模式(Singleton)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式之十七:单例模式(Singleton),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2230字,纯文字阅读大概需要4分钟。
内容图文
单例模式:
确保一个类只有一个实例化的对象并且提供了一个访问这个对象的方法。
UML图:
主要包括:
- Singleton(LoadBalancer):定义了一个操作唯一的对象的方法;负责创建和操作这个唯一的对象。
#include <iostream> class Singleton { public: //这里要将这个方法定义成静态的 static Singleton * getInstance(); private: Singleton() { } private: //静态成员函数只能操作静态成员变量,所以instance也应该是静态的 static Singleton * instance; }; //静态成员变量的初始化 Singleton * Singleton::instance=NULL; Singleton * Singleton::getInstance() { if(instance==NULL) instance=new Singleton(); return instance; } int main() { Singleton *s1=Singleton::getInstance(); Singleton *s2=Singleton::getInstance(); if(s1==s2) std::cout<<"s1 and s2 are the same object"<<std::endl; return 0; }
执行输出:
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <time.h> #include <string> #include <vector> using namespace std; class LoadBalancer { public: static LoadBalancer * getInstance(); string getServer() { int i=rand()%5; return servers[i]; } private: LoadBalancer() { servers.push_back("server I"); servers.push_back("server II"); servers.push_back("server III"); servers.push_back("server IV"); servers.push_back("server V"); } private: static LoadBalancer * instance; vector<string> servers; }; LoadBalancer * LoadBalancer::instance=NULL; LoadBalancer * LoadBalancer::getInstance() { if(instance==NULL) instance=new LoadBalancer(); return instance; } int main() { srand(time(0)); LoadBalancer * load1=LoadBalancer::getInstance(); LoadBalancer * load2=LoadBalancer::getInstance(); cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; cout<<load1->getServer()<<endl; delete load1; return 0; }
执行输出:
原文:http://blog.csdn.net/u012501459/article/details/46505551
内容总结
以上是互联网集市为您收集整理的设计模式之十七:单例模式(Singleton)全部内容,希望文章能够帮你解决设计模式之十七:单例模式(Singleton)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。