单例模式:
单例模式使得一个类只能在全局中生成一个对象,这样可以控制对象频繁地被创建和销毁,减小资源开销
主要解决:一个全局使用的类频繁地创建与销毁。
何时使用:当想控制实例数目,节省系统资源的时候。
如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
关键代码:构造函数是私有的(java和C++)。
public class test {
//创建 SingleObject 的一个对象
private static test instance = new test();
//让构造函数为 private,这样该类就不会被实例化
private test(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void show(){
System.out.println("Hello World!");
}
}
public class test {
private:
test(){}//声明构造函数私有
static test *t;//唯一对象私有
public:
static test* return_one(){
if(t==nullptr) t=new test();//懒汉式,线程不安全
return t;
}
//我们自定义的构造函数是懒汉式,只有在必须调用的时候,才会生成实例,故名懒汉
}
//下面这是饿汉式 类一被装载,就生成实例,很饥饿的样子,故名饿汉
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}