Singleton Pattern

饿汉式:

private A(){}//构造器私有

private static A instance=new A();

public static A getInstance(){

  return instance;}

懒汉式:

private A(){}//构造器私有

private static A instance=null;

public static A getInstance(){

  if(instance==null){//因为只有当instance为空时,才可能存在线程安全问题(即其他线程新建了instance但是本线程判断instance为空)

    synchronized(A.class){

      if(instance==null){

        instance=new A();}}}

  return instance;}

静态内部类:

private A(){}

private static class InnerA{

  private static A instance=new A();}

public static A getInstance(){

  return InnerA.instance;}

前三者构造器是private放置外部new操作,但是会被反射破坏

枚举类:

public enum A{

  INSTANCE;

  public static A getInstance(){

    return INSTANCE;}

}

posted @ 2023-02-21 20:24  平凡的人生不平凡的梦  阅读(17)  评论(0)    收藏  举报