个人简述:
单例模式分两种,分别是懒汉式和饿汉式。其中懒汉式即为当被需要时再创建对象,而饿汉式则为一开始就创建好对象,有需求是就给他。其中懒汉式需要考虑线程安全问题,但是懒汉式相比于饿汉式更加节约空间。而饿汉式由于一开始就创建好对象,消耗更多空间,但是无需考虑线程安全。
单例模式实现核心点:
实现单例模式的核心就是禁止外部类构造对象,只允许外部类使用内部已经创建好的对象。代码中我们将构造方法私有化即可!另外需要将方法和对象声明为静态的!!
为什么方法和对象都要声明为静态的?
由于我们获取单例对象必须通过类中定义的特定方法,由于我们无法通过构造函数先创建对象,因此该方法的调用我们不可能使用 对象.方法名的形式,只能通过 类名.方法名 的方式,因此获取对象的方法也必须声明为静态的。另外静态方法中是不允许访问普通成员变量的,因此对象也必须被定义为竟静态的!!!
懒汉式:
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
饿汉式:
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}



