android service是单例么,Android中的单例模式

今天不思考人生,说说 Android 中的单例。

单例模式大概已经被网上写烂了吧?那也拦不住我在写一遍哈哈哈。但今天谈的不是单例怎么写,毕竟如何写单例网上一抓一大把,只是看看 Android 中的单例运用。

先说说单例模式运用场景,为了避免产生多个对象消耗过多的资源,或者某个对象的类型它确实只应该存在一个,那我们就会考虑使用单例模式。

单例模式可用以下方式实现:

饿汉模式

懒汉模式

双重检查

静态内部类

枚举

我在看书中的时候书中说到四个实现单例的关键点:

1.构造函数不对外开放, 一般为 Private;

2.通过一个静态方法或者枚举返回单例类对象;

3.确保单例类的对象有茄子有一个,尤其是在多线程中;

4.确保单例对象在反序列化时不会从构建对象。

1,2毋庸置疑,3,4是需要注意的点,在多线程中我们需要去关心我拿到的单例对象是否依然还是同一个,不过我对于反射这个也有一点的困惑,因为通过反射哪怕是私有修饰符我也可以拿到,从而使我通过私有的构造器去创建另一个该对象的实例(大概是大家不会这么做,而我只是好奇,不过反射你这是作弊啊!!!),对于第四点我不是很懂,我还在继续在网上看资料。。。

// 测试反射创建单例和单例本身

Class singletonClass = Singleton.class;

Constructor[] c = singletonClass.getDeclaredConstructors();

// 可以访问私有

c[0].setAccessible(true);

Singleton singleton = Singleton.getSingleton();

LoggerUtil.printGeneralLog(singleton);

try {

Singleton s = (Singleton) c[0].newInstance();

s.test();

LoggerUtil.printGeneralLog(s);

}...省略catch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值