什么是单例
一个类只有一个对象实例
为什么要用到单例
单例怎么实现
1,不让其他程序new该类对象,将类中的构造函数私有化。
2,在本类中创建一个对象。
3,定义一个方法返回该对象
代码实现:
public class Singleton {
//创建一个本类对象
private static final Singleton singleton = new Singleton();
//构造函数私有化
private Singleton(){}
//定义一个静态方法返回该对象,让程序可以获取。
public static Singleton getInstance(){
return singleton;
}
懒汉式与饿汉式的区别
懒汉式:类一加载对象就已经存在
饿汉式:类加载进来没有对象,只有调用了getInstance方法时,才会建立对象
延迟加载模式
在多线程访问时会出现线程安全问题。
加了同步可以解决问题,但是降低效率。
代码体现:
饿汉式
public class Singleton {
private static final Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
懒汉式
public class Singleton {
private static Singleton singleton ;
private Singleton(){}
public static Singleton getInstance(){
if(singleton == null){
synchronized (Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}