要实现这一点,需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。这个方法应该是静态方法,因为让类的实例去生成另一个唯一实例毫无意义
如何实现类在内存中只有一个对象呢?
1构造方法私有
2在类中提供一个本类对象
3提供一个公共的方法让外界访问,获取到已创建的本类对象
饿汉式:
public class Son {
private static Son s = new Son();
//构造方法私有化
private Son(){
}
//提供一个公共的方法让外界访问,获取到已创建的本类对象
public static Son getInstance(){
return s;
}
}
懒汉式:
public class Girl {
private static Girl g = null;
//构造方法私有
private Girl(){
}
public static Girl getInstance(){
if (g == null) {
g = new Girl();
}
return g;
}
}
双重锁:
public class Girl {
private static Girl g = null;
//构造方法私有
private Girl(){
}
public static Girl getInstance(){
//第一次访问该方法,创建对象
if (g == null) {
synchronized(Girl.class){
if (g == null) {
g = new Girl();
}
}
}
//之后再访问该方法,返回以前创建好的对象
return g;
}
}
设计模式之单例模式
最新推荐文章于 2022-12-03 18:42:15 发布