题目要求:
单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。
你的任务是设计一个 getInstance
方法,对于给定的类,每次调用 getInstance
时,都可得到同一个实例。
思路:使用类的静态数据成员和静态成员函数。
当同一类的所有对象使用一个量时,对于这个共用的量,可以用静态数据成员变量,这个变量对于同一类的所有的对象都取相同的值。静态成员变量只能被静态成员函数调用。静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。为了避免混乱,所以不可在类体内进行赋值。
静态成员函数也是由同一类中的所有对象共用。只能调用静态成员变量和静态成员函数。
class Solution {
public:
/**
* @return: The same instance of this class every time
*/
static Solution* getInstance() {
// write your code here
if (instance == NULL) {
instance = new Solution();
}
return instance;
}
private:
static Solution* instance;
Solution() {
}
};
Solution* Solution::instance = NULL;