一、定义与类型
定义:保证一个类仅有一个实例,并提供一个全局访问点
类型:创建型
二、单例适用场景
》想确保任何情况下都绝对只有一个实例
单服务情况下网站的计数器使用单例
集群的情况下共享的计数器
应用的配置使用单例 线程池的设计
数据库的连接池也使用单例
三、单例的优点
》在内存里只有一实例,减少了内存开销。一个对象需要频繁创建和销毁,无法优化
》可以避免对资源的多重占用。对同一个文件的写操作
》设置全局访问点,严格控制访问。对外无法new对象,只能通过提供的接口提供访问
缺点;
》没有接口,不能扩展
四、单例重点
》私有构造器。
》线程安全。多线程时的应用。
》延迟加载。只有使用时才创建
》序列化和反序列化安全。一旦序列化和反序列化,会破坏单例模式
》反射。防止反射攻击。
五、单例设计方案中的使用的机制
单例实现方案中使用的双重检查锁内存机制
静态内部类的实现方案,基于类的初始化、延迟加载方案