常见的几种单例模式

老人与JAVA 老人与JAVA     2022-10-05     341

关键词:

单例模式?:系统运行期间,有且仅有一个实例!

 

1:它必须自行创建这个实例(定义了静态的该类私有对象

2:一个类只有一个实例(只提供私有构造器(核心)

3:它必须自行向整个系统提供这个实例(提供一个静态的公有的方法,返回创建或者获取本身的静态私有对象

这样的单例在高并发的时候存在线程不安全的弊端

 

 

懒汉模式实现单例

1:在类加载时不创建实例,采用延迟加载的方式,在运行时调用创建实例

2:特点是,线程不安全,但是延迟加载lazy loading,减轻开销

解决办法:用synchronized 关键字保证线程安全

 

public class Person {

   //提供私有的静态的该类的属性(懒汉式|饿汉式)

   private static Person person=null;

   //私有的构造

   private Person(){}

   //公共的静态同步方法

   public static synchronized Person getPerson(){

      if(person==null){

         person = new Person();

      }

return person;

}

}

 

 

饿汉模式实现单例

1:在类加载的时候就完成初始化

2:特点:线程安全,速度快。

3:问题:不具备延迟加载的特点。

有的时候实例化单例类(ConfigManager)很消耗资源,我们希望能延迟

加载,如何处理呢?--静态内部类

 

public class Person {

   //提供私有的静态的该类的属性(懒汉式|饿汉式)

   private static final Person person= new Person();

   //私有的构造

   private Person(){}

   //公共的静态同步方法

   public static synchronized Person getPerson(){

          return person;

   }

}

 

Java机制规定,内部类 MyObjectHandle只有在getInstance()方法第一次调用的时候才会被加载(实现了延迟加载效果),而且其加载过程是线程安全的(实现线程安全)。内部类加载的时候实例化一次instance

 

常见的几种单例模式(代码片段)

  单例模式:是一种常用的软件设计模式,在它的核心结构中值包含一个被称为单例的特殊类。一个类只有一个实例,即一个类只有一个对象实例。  对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以... 查看详情

常见的几种单例模式写法(代码片段)

  单例模式:是一种常用的软件设计模式,在它的核心结构中值包含一个被称为单例的特殊类。一个类只有一个实例,即一个类只有一个对象实例。  对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以... 查看详情

几种单例模式实现方式及其优缺点分析(代码片段)

...一实例;单例类必须给所有其他对象提供这一实例。几种常见的单例模式单例模式的写法有好几种,这里主要介绍四种:懒汉式单例、饿汉式单例、登记式单例、枚举式单例懒汉式单例不着急实例化,需要用的时候才初始化原始... 查看详情

100个unity小知识点|unity中常用的几种单例写法(代码片段)

...可以用来专业制作游戏!Unity小知识点学习Unity中常用的几种单例写法单例模式(SingletonPattern)保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式优点单例模式核心在于对于某个单例类,在系统中同时... 查看详情

100个unity小知识点|unity中常用的几种单例写法(代码片段)

...可以用来专业制作游戏!Unity小知识点学习Unity中常用的几种单例写法单例模式(SingletonPattern)保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式优点单例模式核心在于对于某个单例类,在系统中同时... 查看详情

java单例模式常见的几种写法(代码片段)

单例模式有多种写法,都有各自的优缺点,最常见的优缺点就是【懒汉和饿汉】的比较,以及是否线程安全懒汉模式,节约内存,只有使用到时才创建单例对象,可能会有线程安全问题饿汉模式,浪费... 查看详情

c#中几种单例模式(代码片段)

1.静态代码块///<summary>///静态代码块///仅在第一次调用类的任何成员时自动执行///</summary>publicclassSingletonStaticprivatestaticreadonlySingletonStatic_instance=null;staticSingletonStatic()_instance=newSingletonSta 查看详情

线程安全的单例模式的几种实现

单例模式是一种常见的设计模式;JavaSingleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbagecollection)。 单例模式也是一种比较常见的设... 查看详情

常见的五种单例模式实现方式

--主要:   饿汉式(线程安全,调用效率高,但是不能延时加载)   懒汉式(线程安全,调用效率低,但是可以延时加载)--其他:   双重检测锁式(由于JVM底层内部模型原因,偶尔会出现问题... 查看详情

关于单利模式的几种实现方式(代码片段)

单例模式是java中非常常见的一种设计模式,也是java学习中很热门的一个知识模块,今天就和大家一起来了解一下单例模式和单例模式的几种实现方式。  单例模式的定义:  单例模式是指某个类只有一个实例,并... 查看详情

java常见的几种设计模式

设计模式 1、概述 1)设计模式(Designpattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结; 2)分类: 创建型模式(创建对象的): 单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 行... 查看详情

单例模式的几种写法的差异

设计模式:单例模式的几种写法的差异1.单例模式的概念单例模式(SingletonPattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类... 查看详情

单例模式作用特点及常见的单例模式分析(6种单例模式分析)(代码片段)

单例模式:即在整个生命周期中,对于该对象的生产始终都是一个,不曾变化。保证了一个类仅有一个实例,并提供一个访问它的全局访问点。作用:在要求线程安全的情况下,保证了类实例的唯一性,线程安全。在不需要多实... 查看详情

五种单例模式实现(代码片段)

...有一个实例,并向外提供一个访问该实例的访问点。 常见场景:数据库连接池的设计一般也是单例模式在Servlet编程中,每个Servlet也是单例模式在Spring中,默认创建的bean也是单例模式。。。。。。  优点:1、由于每... 查看详情

单例模式的几种实现方式

单例模式的定义:  保证一个类仅有一个实例,并提供一个它的全局访问点。  单例模式有两种实现方式:饿汉模式和懒汉模式。懒汉式实现代码:publicclassSingleton  privatestaticSingletonuniqueInstance=null;  private Singleton()... 查看详情

单例模式的几种写法

1、静态初始化/**饿汉式类加载到内存后,就实例化一个单例,jvm保证线程安全简单实用,推荐使用唯一缺点:不管用到与否,类加载时就完成实例化(话说你不用的,你转载它干啥)一般这种就够用了*/publicclassMgr01{privatestaticfin... 查看详情

单例模式的几种写法

1首先要知道,什么叫做单例模式。单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例2单例模式简介单例模... 查看详情

单例模式的几种写法

懒汉式饿汉式就不多说了体会代码 都不能防止反射机制攻击和反序列化 publicclassSingleton{privatestaticfinalSingletonMYINSTANCE=newSingleton();privateSingleton(){super();}publicstaticSingletongetInstance(){returnMYINSTANCE;}}/ 查看详情