关于单例模式,还是不清楚何时该用单例
对于设计模式中的单例模式,到底何时该用单例?
今天在Android LocalBroadcastManager
本地广播见到了单例模式
public static LocalBroadcastManager getInstance(Context context) {
synchronized (mLock) {
if (mInstance == null) {
mInstance = new LocalBroadcastManager(context.getApplicationContext());
}
return mInstance;
}
}
有没有大神能够指点下,为何这里要用单例?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
个人拙见,你想用单例模式一般是以下情况
就以
LocalBroadcastManager
为例,它的工作模式是你在这个类里面注册广播接收器,再通过它来发送广播,从而注册的广播接收器可以收到这个广播。那么如果不使用单例模式,你给对象a注册一个接收器,那么下次你new出来一个对象b,你觉得朝着对象b发广播,a还能收到吗?这就需要你获取到的永远是对象a吧?
同样,如果对象a不是静态的(或者说单例),过一会它失去引用被回收了,那么下次你怎么获取到它?
再举个例子,Application不就是典型的单例吗?
创建需要较大代价,创建后比较稳定,就可以使用单例模式,可以起到缓存的作用。和枚举有类似的地方
Android
广播分为全局广播和本地广播,全局广播的管理和广播的分发都是由系统来处理的,但是本地广播是由应用程序自己管理的,因此,在应用程序的当前进程里,需要有一个不依赖于各个组件生命周期的广播管理器,用于接受注册和广播分发。需要注意的是,如果使用了远程服务(
Remote Service
),那这东西就不灵了,因为远程服务相对于应用主程序,它是一个独立的进程。依此类推,就大概可以知道什么时候该使用单例了。