博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android常用设计模式之单例模式
阅读量:5993 次
发布时间:2019-06-20

本文共 866 字,大约阅读时间需要 2 分钟。

定义:单例模式是一种对象创建模式,用于产生一个对象的具体实例,他可以确保系统中一个类只产生一个实例。

单例模式类图:

类图解释:其中包含两个角色,单例类(Singleton)和使用者(SingletionMain) 该类图解释为:单例类为一个自身关联,使用者对单例类为一个单向关联(引用)

优点:
  • 对于频繁使用的对象,可以省略穿件对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。
  • 由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间。
实现方式:

使用静态内部类的方式实现单例,既可以做到延迟加载,也不必要使用同步关键字,是一种比较完善的实现。

public class StaticSingleton {    private StaticSingleton (){}    private static class SingletonHolder{        private static Singleton instance = new Singleton();    }    public static StaticSingleton getInstance(){        return SingletonHolder.instance;    }}复制代码

#####原理: 在这个实现中,单例模式使用内部类来维护单例的实力,当StaticSingleton被加载时,其内部类并不会被初始化,故可以确保当StaticSingleton类被JVM加载时,不会初始化单例类,而当getInstance()方法被调用时,才会加载SingletonHolder,从而初始化instance。同时,由于实例的建立是在类加载时完成,故天生对多线程友好,getInstance()方法也不需要使用同步关键字。因此,这种实现方式同时兼备以上两种实现优点。

github

https://github.com/zyl409214686/DesignPatterns

转载地址:http://ruxlx.baihongyu.com/

你可能感兴趣的文章
无法启动Outlook,无法打开Outlook窗口,无法打开文件夹的集合
查看>>
《TCP/IP详解卷1》学习小结(三)------ARP协议与RARP协议
查看>>
windows phone (20) Iamge元素
查看>>
golang 强制类型转换
查看>>
案例精解:BGP路由黑洞
查看>>
【Laravel 5.5】快速入门 —— 安装配置篇
查看>>
报告称三季度Android、iOS垄断智能机市场96%份额
查看>>
linux下iptables讲解
查看>>
java启动dos命令收集笔记一
查看>>
图片无法显示,载入制定url失败
查看>>
如何在MAP/REDUCE中不检查输出路径?
查看>>
Redis系列--6、Redis Java连接操作
查看>>
Python之encode与decode浅析
查看>>
记一次windows下oracle的整库移动
查看>>
MPLS TE 流量工程路径选择原理和配置模板 for CISCO
查看>>
mysql replication(主从复制)(二)MSS模式
查看>>
APP-V序列化服务器部署,应用程序虚拟化部署笔记四
查看>>
一段查看终端端口的asp代码
查看>>
关闭默认共享-注册表-批处理
查看>>
apache_1.3.41+mysql-4.0.26+php-4.4.8+Redhat5 linux
查看>>