关于我们 | 联系我们

AG真人-AG真人官方-网站

荣誉资质
当前位置:主页 > 荣誉资质 >

23种设计模式详解-90%的人所不知道的单例模式

本文摘要:单例模式的界说与特点单例的界说指一个类只有一个实例,且该类能自行建立这个实例的一种模式。例如,Windows 中只能打开一个任务治理器,这样可以制止因打开多个任务治理器窗口而造成内存资源的浪费,或泛起各个窗口显示内容的纷歧致等错误。 单例模式有 3 个特点:单例类只有一个实例工具;该单例工具必须由单例类自行建立;单例类对外提供一个会见该单例的全局会见点;单例模式的结构与实现1、单例模式的结构单例模式的主要角色如下。单例类:包罗一个实例且能自行建立这个实例的类。

AG真人

单例模式的界说与特点单例的界说指一个类只有一个实例,且该类能自行建立这个实例的一种模式。例如,Windows 中只能打开一个任务治理器,这样可以制止因打开多个任务治理器窗口而造成内存资源的浪费,或泛起各个窗口显示内容的纷歧致等错误。

单例模式有 3 个特点:单例类只有一个实例工具;该单例工具必须由单例类自行建立;单例类对外提供一个会见该单例的全局会见点;单例模式的结构与实现1、单例模式的结构单例模式的主要角色如下。单例类:包罗一个实例且能自行建立这个实例的类。会见类:使用单例的类。其结构如下图所示单例模式的结构图2. 单例模式的实现第 1 种:饿汉式的单例模式该模式的特点是类一旦加载就建立一个单例,保证在挪用 getInstance 方法之前单例已经存在了。

饿汉式单例饿汉式单例在类建立的同时就已经建立好一个静态的工具供系统使用,以后不再改变,所以是线程宁静的,可以直接用于多线程而不会泛起问题。第 2 种:懒汉式单例模式该模式的特点是类加载时没有生成单例,只有当第一次挪用 getlnstance 方法时才去建立这个单例。代码如下:懒汉式单例模式注意:如果编写的是多线程法式,则不要删除上例代码中的关键字 volatile 和 synchronized,否则将存在线程非宁静的问题。如果不删除这两个关键字就能保证线程宁静,可是每次会见时都要同步,会影响性能,且消耗更多的资源,这是懒汉式单例的缺点。

第 3 种:双重检测锁模式90%的人都只知道饿汉式和懒汉式两种模式,此种模式是懒汉式单例的升级版,可以降低由于synchronized关键字带来的性能问题,可是会由于JVM底层的原因偶然会泛起问题双重检测锁模式第 4 种:静态内部类该实现方式比力简朴,而且既实现了由前述事实所保证的惰性初始化(Lazy-Initialazation),又由JVM保证了多线程并发会见的正确性,同样的也只有很少人知道这种实现方式静态内部类实现方式第 5 种:枚举模式该方法是使用了枚举类的天然单例的特性,一般很少用到,可是也属于单例模式的一种单例模式的应用场景前面分析了单例模式的结构与特点,以下是它通常适用的场景的特点。在应用场景中,某类只要求生成一个工具的时候,如一个班中的班长、每小我私家的身份证号等。当工具需要被共享的场所。

由于单例模式只允许建立一个工具,共享该工具可以节约内存,并加速工具会见速度。如 Web 中的设置工具、数据库的毗连池等。当某类需要频繁实例化,而建立的工具又频繁被销毁的时候,如多线程的线程池、网络毗连池等。

AG真人官方

以上就是单例模式的所有内容,有疑问的同学可以点赞留言或者私信我哦,下一期内容:23种设计模式之工厂模式另外附上码云的源码 https://gitee.com/xiaoyu1234/pattern23送给列位法式老爷们。


本文关键词:AG真人,23种,设计模式,详解,-90%,的,人所,不知道,单例

本文来源:AG真人-www.qingxiuyuan.com

Copyright © 2007-2021 www.qingxiuyuan.com. AG真人科技 版权所有 备案号:ICP备90038471号-5