比想象中复杂一点的单例模式
Posted IT夜行者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比想象中复杂一点的单例模式相关的知识,希望对你有一定的参考价值。
class B{
//1.私有构造方法
private B(){}
//2.静态私有对象
private final static B b = new B();
//3.提供一个对外访问的方法
public static B getInstance(){
return b;
}
}
class B{
//1.私有构造方法
private B(){}
//2.静态私有对象
private static B b ;
static {
b = new B();
}
//3.提供一个对外访问的方法
public static B getInstance(){
return b;
}
}
class B{
//1.私有构造方法
private B(){}
//2.静态私有对象
private static B b ;
//3.提供一个对外访问的方法
public static B getInstance(){
if(b == null){
b = new B();
}
return b;
}
}
class B{
//1.私有构造方法
private B(){}
//2.静态私有对象
private static B b ;
//3.提供一个对外访问的方法
public synchronized static B getInstance(){
if(b == null){
b = new B();
}
return b;
}
}
class B{
//1.私有构造方法
private B(){}
//2.静态私有对象
private static volatile B b ;
//3.提供一个对外访问的方法
public static B getInstance(){
if(b == null){
synchronized (B.class){
if(b == null){
b = new B();
}
}
}
return b;
}
}
class B{
//1.私有构造方法
private B(){}
public static class C{
public static B b = new B();
}
//2.提供一个对外访问的方法
public static B getInstance(){
return C.b;
}
}
enum B{
INSTANCE;
public void print(){
System.out.println("HELLO WORLD");
}
}
public class A {
public static void main(String[] args) {
B instance1 = B.INSTANCE;
B instance2 = B.INSTANCE;
System.out.println(instance1 == instance2);
System.out.println("instance1:"+instance1.hashCode());
System.out.println("instance2:"+instance2.hashCode());
instance1.print();
}
}
以上是关于比想象中复杂一点的单例模式的主要内容,如果未能解决你的问题,请参考以下文章