一、单例模式

1.单例模式

1.1定义:属于一种对象创建模式,能够确保系统中一个类有且只有一个实例

1.2好处:

1.2.1对于频繁使用的对象,可以省略创建对象所花费的时间

1.2.2由于new的次数减少,对内存的使用频率也降低了,减去GC压力

1.3角色

单例类和使用类

实例1:

public class SingleClass3 {

private  SingleClass3(){

System.out.println("init SingleClass3...");

    }

private  static  SingleClass3 instance=new SingleClass3();

    public synchronized static  SingleClass3 getInstance()

{

return  instance;

    }

}

假设类构造函数初始化时间较慢,则延迟加载:

public class SingleClass {

private static  SingleClass instance=null;

    private  SingleClass()

{

System.out.println("SingleClass Constructor ...");

    }

public  static synchronized SingleClass getInstance()

{

if (instance==null)

instance=new SingleClass();

            return instance;

    }

}

但因为使用了同步方法,所以在多线程情况下会变慢,虽然减少了类加载时间,但却因为同步方法导致时间变长,于是引入内部类:


public class SingleClass2 {

private  SingleClass2()

{

System.out.println("SingleClass2 Constructor ...");

    }

private  static  class  SingleHolder{

private  static SingleClass2 instance=new SingleClass2();

    }

public  static  SingleClass2 getInstance()

{

return SingleHolder.instance;

    }

}

思考:

如何理解使用内部类来实现单例模式?

静态内部类只有在被调用时才会加载,且类的加载过程是线程保护的所以不存在线程安全问题。而且这个类的实例化是在静态内部类中且使用了final修饰,只能赋值一次,static修饰随着类的加载而加载

使用:

1.配置类

2.常用注解

@Configuration:指定为配置类

@Component:

@Aspect

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 7,237评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,508评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,958评论 18 399
  • 20 萧鸢 4月11日 周三 时间过去多久?我不知道。 在他松开抱紧我的胳膊前,夜色掩盖了一对男女的激情。 我渴望...
    春哥儿阅读 3,570评论 1 1
  • 空气像是停止了呼吸 风也消失往日的神采 维持一段38℃的低烧 我们之间不在相互吐露心事 多么漫长的等待 像漫漫冬夜...
    飞鸟cloud阅读 1,319评论 0 1