单例设计模式是为了缓解内存的压力不让你new多个对象,只能new一个出来
所以该模式原理:是保证某个类中内存中只有一个对象
怎么实现:
第一步:我将自己写的类的构造方法私有化private,那么你就不能创建对象了吧
第二部:然后我创建一个方法,这个方法是静态,
第三部:我将刚创建方法的返回值类型设为该类的名字。这样可以通过类名打点调用
该方法,而且返回该类型的对象,这样就获得了该类的对象
单例有两个模式:懒汉式和饿汉式
(1)饿汉式:
class Single
{
private Single(){}//将构造函数私有化,不让别的类建立该类对象
private static final Single s=new Single();//自己建立一个对象
public static Single getInstance()//提供一个公共访问方式
{
return s;
}
}
(2)懒汉式:
class Single
{
private Single(){}
private static Single s;
public static Single getInstance()
{
if(s==null)//延迟了加载
s=new Single();
return s;
}
}
这两个模式的区别:
(1)饿汉式是类一加载进内存就创建好了对象;懒汉式是延迟加载,
(2)如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了 |
|