欢迎光临散文网 会员登陆 & 注册

单例模式

2023-06-07 18:03 作者:便宜酒  | 我要投稿

用于保证一个类只有一个实例,并提供全局访问点。在安卓开发中,可以用单例来实现不同Activity之间共享数据,比如某自定义类的集合。

【懒汉式】

调用get方法时才完成实例化。

【饿汉式】

程序启动时就立即创建该单例对象。不需要考虑线程安全问题。

【破坏单例模式】

1.通过Singleton.class获取Singleton类的Class对象,然后使用getDeclaredConstructor()方法获取Singleton类的构造方法,再通过setAccessible(true)方法将构造方法的访问权限设置为可访问,最后使用newInstance()方法创建Singleton对象。

解决方法:加对象锁或者同步锁都可以。

2.当一个单例对象被序列化后,如果在反序列化过程中没有特殊处理,会通过调用类的构造方法来创建对象,那么系统会重新创建一个新的对象,从而导致原有的单例对象被破坏。单例模式的构造方法通常被私有化,从而不能直接被外部调用。因此,如果没有特殊处理,系统会使用默认的构造方法来创建一个新的对象。

如下方式可以解决。在反序列化时会返回已经创建好的单例实例,而不会再创建新的实例。


单例模式的评论 (共 条)

分享到微博请遵守国家法律