1 Star 0 Fork 0

baifc / singleton

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

单例设计模式

各种单例模式理解

饿汉式

优点

没有加任何的锁、执行效率比较高,线程安全

缺点

类加载的时候就初始化,不管用与不用都占着空间,浪费了内存,可能被反射等行为破坏

懒汉式

优点

调用的时候加载,节省内存空间

缺点

为了保证线程安全,需要使用锁,影响了性能,可能被反射等行为破坏

枚举式

优点

保证绝对的实例唯一性,不会被反射等行为破坏

缺点

实质上属于懒汉式单例,会在初始化被加载,浪费内存

容器式

优点

如果创建实例非常多的时,便于管理

缺点

线程不安全

ThreadLocal模式

优点

能保证在单个线程中是唯一的,不用考虑线程安全问题

缺点

不能保证全局对象的唯一性

破坏单例方式

反射破坏

调用者反射来调用其构造方法,然后,再调用 getInstance()方法,得到两个不同实例。

解决办法:在构造方法中判空处理

反序列化破坏

调用者将对象序列化然后写入到磁盘,然后再从磁盘中读取到对象,反序列化转化为内存对象,得到不同实例。

解决办法:在class中增加readResolve()方法即可

空文件

简介

暂无描述 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/baifc/singleton.git
git@gitee.com:baifc/singleton.git
baifc
singleton
singleton
master

搜索帮助