首页 > 编程知识 正文

单例模式有几种实现方式,什么是单例

时间:2023-05-04 03:46:59 阅读:32483 作者:2697

单实例模式1,含义:保证类只有一个实例,并提供访问它的全局接入点。 二、实现思路(1)私有化结构方法;2 )类内部构建实例;3 )提供通用静态方法,返回对象实例的三七种实现代码;1 )空腹汉式(静态常量)//优点)类加载时实例化结论)正在开发中,但publicclassSingletonhungry(/1,专用生成器专用签名hungry ) )/2,类内部要创建的实例专用密钥类内部创建对象实例//3、实例对象publicstaticsingletonhungrygetinstance () { return instance; ()2)空腹汉式(静态代码块)//优点:类加载时实例化,避免了线程同步问题) /缺点:不用就浪费内存) /结论:在开发中可以使用,但publicive 专用生成器专用单个实例) )/2、类内部要创建的实例专用单个实例)、类内部要创建的实例//3,实例对象publicstaticsingletonhungrygetinstance () {返回实例; ()3) sqdmb表达式(线程不安全)//优点:仅在使用时创建,不浪费内存)//缺点:在多线程环境中可能创建多个)//结论:在开发中不使用。 publicclasssingletonlazy { privatesingletonlazy (} { } privatestaticsingletonlazyinstance; publicstaticsingletonlazygetinstance () if ) instance==null ) { instance=new SingletonLazy; }返回实例; }(4) sqdmb模式(已同步) /优势:线程安全了) /劣势:效率太低) /结论:在开发过程中,publicclasssingletonlazy { privatesinglegles } publicstaticsynchronizedsingletonlazygetinstance () if(instance==null ) { instance=new SingletonLazy ); }返回实例; } )5) sqdmb表达式(双检查)/sqdmb表达式双检查) /优点:解决了线程同步和效率问题) /结论:建议/** *注意:如果不使用volatile关键字,可能会发生异常。 *instance=newsingletonlance这是三个部分* 1、为对象分配内存空间* 2、初始化对象* 3、实例指向内存区域*编译器运行时重新排序指令,以及1330 添加volatile的是*/publicclasssingletonlazy { privatesingletonlazy () } privatestaticvolatilesingletonlazyinstance; publicstaticsingletonlazygetinstance () if(instance==null ) synchronized (singleton lazy.class ) if (instance=} } ()6) sqdmb模式静态内部类/** *静态内部类的特点(1、SingletonStaticClass加载时不加载) 2、加载时线程安全。 *结论: */publicclasssingletonstaticclass {私有singletonstaticclass () } 建议使用的privatestaticclasssingletonstaticclassinstance { privatestaticfinalsingletonstaticclassinstance=newsingletonstaticlaticlation publicstaticsingletonstaticclassgetinstance ((returnsingletonstaticclassinstance.instance; ()7)不仅解决枚举//多线程和内存浪费。 也可以防止通过返回序列化来创建新对象//结论:枚举单枚举实例; 公共同步枚举getinstance () { return INSTANCE; }}```#单实例模式###一、含义:保证一个类只有一个实例,并提供访问它的全局接入点。 ###二、构想#######(1)私有化构建方法##### ) (2)类内部构建示例##### ) ) )3)对象实例###三、七种实现代码##### ) publicclassSingletonhungry(/1,专用生成器专用单个hungry ) )/2,类内部要创建的实例专用单个gleton hungry 3、实例对象publicstaticsingletonhungrygetinstance () { return instance; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。