zoukankan      html  css  js  c++  java
  • 《Android源码设计模式》--原型模式

    No1:

    原型模式使用场景

    1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型复制避免这些消耗

    2)通过new产生一个对象需要非常繁琐的数据准备货访问权限,这是可以使用原型模式

    3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用,即保护性拷贝

    No2:

    原型模式大部分是通过实现cloneable接口实现的,但通过clone拷贝对象时并不会执行构造函数。

    No3:

    Cloneable是一个标识接口,里面的clone方法并不是Cloneable接口的,而是Object中的方法。

    No4:

    浅拷贝实际上并不是将原始文档的所有字段都重新构造了一份,而是副本文档的字段引用原始文档的字段,解决办法就是采用深拷贝

    No5:

    ArrayList实现了Cloneable接口,属于原型模式

    No6:

    Intent内部的克隆方式是通过new Intent(this)构造函数进行拷贝。因为只有在对象的构造成本比较高或者构造较为麻烦的时候,才使用clone()函数实现高效率

    No7:

    PackageManagerService(PMS)启动之后,会扫描系统中已安装的apk目录,PMS会解析apk包下的AndroidManifest.xml文件得到APP的相关信息,完成之后就构建好了整个apk的信息树。PMS对于apk的解析工作它在构造函数时就已经开始了。

    No8:

    PMS不仅需要加载系统已安装的各类apk,在此之前还需要加载Framework资源与核心库,加载了资源与核心库之后才开始对扫描的指定目录下的apk文件进行解析。

    No9:

    startActivity最终也是调用startActivityForResult

    No10:

    在系统启动时PackageManagerService会启动,此时PMS将解析所有已安装的应用的信息,构建一个信息表,当用户通过Intent来跳转到某个组件时,会根据Intent中包含的信息到PMS中查找对应的组件列表,最后跳转到目标组件中。

    No11:

    原型模式有一个最重要的用途就是保护性拷贝,也就是某个对象对外可能是只读的,为了防止外部对这个只读对象修改,通常可以通过返回一个对象拷贝的形式实现只读的限制。

    No12:

    优点

    原型模式是在内存中二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好的体现其优点。

    缺点

    既是优点也是缺点,直接在内存中拷贝,构造函数是不会执行的。优点是减少了约束,缺点也是减少了约束。

  • 相关阅读:
    稀疏自编码器一览表
    ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树)
    K好数(DP)
    【BZOJ4025】二分图
    又一次认识java(七) ---- final keyword
    二分查找
    从朴素贝叶斯分类器到贝叶斯网络(下)
    最近感到深深的绝望,感觉自己太菜了
    leetcode No.19 删除链表的倒数第N个节点 (python3实现)
    leetcode No.94 二叉树的中序遍历 (python3实现)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7760573.html
Copyright © 2011-2022 走看看