深入学习:单例

作者: 眷卿三世 | 来源:发表于2017-06-02 16:28 被阅读0次

    本文摘自:Android编程权威指南

    Android开发实践中,经常会用到CrimeLab中使用过的单例模式。然而,单例使用不当的话,

    会导致应用难以维护,因此它也常 人  。

    Android开发常用到单例的一大原因是,它们比fragment或activity活得 。例如,在设备旋转

    或是在fragment和activity间跳转的场景下,单例不会受到影响,而旧的fragment或activity已经不

    复存在了。

    单例能方便地存储控制模型层对象。假设有个比CriminalIntent更为复杂的CriminalIntent应

    用,它的许多个activity和fragment会修改crime数据。某个控制单元修改了crime数据之后, 么保

    证发 给其他控制单元的是最新数据呢?如果CrimeLab掌控数据对象,所有的修改都由它来处

    理,是不是数据的一致性控制就容易多了?而且,在控制单元间 转时,我们还可以给每个crime添加ID标识,让控制单元使用ID标识从CrimeLab获取完整的crime数据。

    再来  单例的缺点。举个例子,虽然单例能存储数据,活得比控制单元  ,但这并不代

    表它能 存。在我们切换至其他应用,又Android回收内存时,单例 同那些实例变量也就不

    复存在了。结论很明显:单例无法做到持 存储。(将文件写入 盘或是发 到Web服务器是不

    错的数据持 化存储方案。)

    单例还不利于单元  。例如,如果应用代码直接调用CrimeLab对象的 态方法,  时以

    模 版本的CrimeLab代替实际CrimeLab实例就不 现实。实践中,Android开发人员会使用工具解决这个问题。这个工具允许以单例模式使用对象,对象也可以按需替换。

    单例使用很方便,因而很容易被滥用。在想用就用,想存就存之前,  你能深思熟虑:数

    据 竟用在哪里?用在哪里能真正解决问题?

    假如不 重对待这个问题,很可能后来人在查看你的单例代码时,就 打开了一个满是 糟

    糟  的  :  、  、旧照片,等等。它们有什么存在的意义?再强调一次:请确保

    有充足的理由使用单例模式存储你的共享数据!

    使用得当,单例就是拥有优 架构的Android应用中的关键部件。

    相关文章

      网友评论

        本文标题:深入学习:单例

        本文链接:https://www.haomeiwen.com/subject/fuyufxtx.html