重庆网站域名备案地址,工作室建设方案怎么写,儿童网站网页设计,自动生成网站地图怎么做目录
什么是单例模式
单例模式的优点
创建单例模式的三大要点
单例模式的实现方式
饿汉模式
懒汉模式
使用场景 什么是单例模式 单例模式是一种创建型设计模式#xff0c;它的核心思想是保证一个类只有一个实例#xff0c;并提供一个全局访问点来访问这个实例。 什…目录
什么是单例模式
单例模式的优点
创建单例模式的三大要点
单例模式的实现方式
饿汉模式
懒汉模式
使用场景 什么是单例模式 单例模式是一种创建型设计模式它的核心思想是保证一个类只有一个实例并提供一个全局访问点来访问这个实例。 什么是只有一个实例 就是在整个应用程序中只存在该类的一个实例对象而不是创建多个相同类型的对象。 单例模式的优点 全局控制保证只有一个实例这样就可以严格的控制用户怎样访问它何时访问它节省资源只有一个实例存在避免多次创建相同的对象从而节省了系统资源提高性能单例模式可以实现懒加载只有在需要的时候才进行实例化。 创建单例模式的三大要点 私有的构造函数防止外部代码直接创建类的实例私有的静态变量保证该类的唯一实例公有的静态方法通过这个公有的静态方法来获取实例全局访问点 单例模式的实现方式 饿汉式在类加载时就已经完成了实例的创建不管后面创建的实例有没有使用先创建再说。 懒汉式 只有在请求实例时才会创建如果首次请求时还没创建就创建一个新的实例如果已经创建了就返回已有的实例。 优缺点比较 饿汉模式在刚开始就创建了实例不存在线程安全问题但是有可能创建的实例一直没用会造成资源浪费懒汉模式只有在请求的时候才会创建不存在资源浪费但是如果有多个线程同时访问getInstance()并且同一时刻检测到没有创建实例就可能会同时创建实例违背了单例模式可以用互斥锁来解决。 饿汉模式
//饿汉模式在类加载的时候就创建实例可能会没有使用而造成资源浪费
public class Singleton_e {
// 私有的静态实例变量private static final Singleton_e instancenew Singleton_e();private Singleton_e(){
// 私有的构造方法}
// 公有的静态访问方法public static Singleton_e getInstance(){return instance;}
}
懒汉模式
public class Singleton_l {
// 懒汉模式在请求实例的时候才会创建
// 私有的静态变量private static Singleton_l instance;
// 私有的构造方法private Singleton_l(){}
// 公有的静态方法
// 使用双重校验锁来确保线程安全public static Singleton_l getInstance(){if(instancenull){synchronized (Singleton_l.class){if(instancenull){return new Singleton_l();}}}return instance;}
}
使用场景 1. 资源共享 多个模块共享某个资源的时候可以使⽤单例模式⽐如说应⽤程序需要⼀个全局的配置管理器来存储和管理配置信息。 2. 只有⼀个实例 当系统中某个类只需要⼀个实例来协调⾏为的时候可以考虑使⽤单例模式 ⽐如说管理应⽤程序中的缓存确保只有⼀个缓存实例避免重复的缓存创建和管理。 3. 懒加载 如果对象创建本身就⽐较消耗资源⽽且可能在整个程序中都不⼀定会使⽤可以使⽤单例模式实现懒加载。