单例模式
只允许创建一个该类的对象
- 饿汉式
public class Singleton {
//声明该类的唯一实例
private static Singleton instance = new Singleton();
private Singleton(){
}
// 对外提供访问方法
public static Singleton getInstance(){
return instance;
}
}
class Test{
public static void main(String[] args) {
Singleton cc1 = Singleton.getInstance();
Singleton cc2 = Singleton.getInstance();
System.out.println(cc1 == cc2); //true
}
}
- 懒汉式
//懒汉(通过synchronized 实现线程安全)
class Singleton2 {
//声明一个该类的唯一的实例
private static Singleton2 instance = null;
//私有化构造器
private Singleton2() {
}
//对外提供一个访问方法
public static synchronized Singleton2 getInstance() {
if(instance==null) {
instance = new Singleton2();
}
return instance;
}
}
//懒汉模式(通过静态内部类实现线程 安全)
class Singleton3{
public Singleton3() {
System.out.println("执行.....");
}
private static class Holder{
static Singleton3 s = new Singleton3();
}
public static Singleton3 getInstance() {
return Holder.s;
}
}