单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
如何保证对象只有一个?
1.不能让别人new对象。(想到了private,对,就是它)
2.对外提供一个公共方法,供别人调用来完成创建对象这个操作
3.在本类中创建一个本类的实例.
下面介绍两种单例设计模式:
立即加载/饿汉式加载模式:
class Singleton1{
//在静态方法区中只new一次,即保证只能new一个对象实例
private static Singleton1 s= new Singleton1();
private Singleton1(){
}
public static Singleton1 getInstance(){
return s;
}
}
延迟加载/懒汉式模式:
class Singleton2{
private static Singleton2 s = null;
private Singleton2(){
}
public static Singleton2 getInstance(){
if(s == null)
{
s = new Singleton2();
}
return s;
}
}