Java面向对象(16)--单例(Singleton)设计模式

简介: Java面向对象(16)--单例(Singleton)设计模式

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。


饿汉式


class Singleton {
  // 1.私有化构造器
  private Singleton() {
  }
  // 2.内部提供一个当前类的实例,此实例也必须静态化
  private static Singleton instance = new Singleton();
  // 3.提供公共的静态的方法,返回当前类的对象
  public static Singleton getInstance() {
  return instance;
  }
}


懒汉式


class Singleton {
  // 1.私有化构造器
  private Singleton() {
  }
  // 2.内部提供一个当前类的实例,此实例也必须静态化
  private static Singleton instance;
  // 3.提供公共的静态的方法,返回当前类的对象
  public static Singleton getInstance() {
  if(instance == null) {
  instance = new Singleton();
  }
  return instance;
  }
}


饿汉式:

对象加载时间过长

线程安全


懒汉式:

延迟对象的创建

目前的写法线程不安全


单例模式的优点:


由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。


相关文章
|
2天前
|
设计模式 安全 Java
Java中的单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点
Java单例模式确保类仅有一个实例,并提供全局访问点。常见实现包括: - 饿汉式:静态初始化,线程安全。 - 懒汉式:延迟初始化,需同步保证线程安全。 - 双重检查锁定:优化懒汉式,减少同步开销。 - 静态内部类:延迟加载,线程安全。 - 枚举:简洁线程安全,不适用于复杂构造。 - 容器实现:如Spring框架,用于依赖注入。选择依据需求,如延迟加载、线程安全和扩展性。
32 10
|
1天前
|
设计模式 缓存 安全
Java设计模式的单例模式应用场景
Java设计模式的单例模式应用场景
15 8
|
1天前
|
设计模式 缓存 安全
java中的设计模式&单例模式
java中的设计模式&单例模式
|
4天前
|
设计模式 开发框架 Java
java设计模式面试题大全含答案
java设计模式面试题大全含答案
|
3天前
|
存储 Java C语言
Java面向对象课程设计--类管理系统
Java面向对象课程设计--类管理系统
11 1
|
3天前
|
Java
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
|
15小时前
|
Java
面向对象的JAVA代码详解
面向对象的JAVA代码详解
13 5
|
15小时前
|
设计模式 Java
Java中设计模式及举例代码
Java中设计模式及举例代码
|
15小时前
|
Java 新能源
Java面向对象的过程及代码实现方法
Java面向对象的过程及代码实现方法
|
1天前
|
设计模式 安全 Java
Java中常见的设计模式及应用场景
Java中常见的设计模式及应用场景