《Android设计模式与源码解析》学习记录二
来源:互联网 发布:linux hosts 生效 编辑:程序博客网 时间:2024/06/04 19:04
原型模式
1.多用于创建复杂的或者构造耗时的实例
2.原型拷贝可以避免类的初始化,对于复杂对象可以节省大量的数据,硬件资源
3.一个对象需要提供给其他对象进行访问,而且各个调用者可能都需要修改这个对象时,使用原型模式拷贝多个对象供调用者使用
可以通过实现Cloneable接口也可以自定义实现。
4.浅拷贝与深拷贝之分
浅拷贝:副本的字段引用直接引用原本的字段
深拷贝:副本的字段引用使用原本字段的拷贝
代码范例:
/**
**clone方法的实现
**
**/
@override
public Object clone(){
try{
Origin copy=(Origin)super.clone();
copy.string=this.string;//值类型可以直接引用
/**
copy.array=this.array;
*/
//浅拷贝,指向了同一个对象,修改copy会影响origin
copy.array=(ArrayList<String>)this.array.clone();//深拷贝
}
}
Android中原型模式大量使用。最常见的就是Intent。大对象在使用时会占用大量内存,而clone是一个native方法,可以直接操作内存中的二进制流,性能相比new提升明显。
Intent的clone方法与其他不同,常见的clone是调用Object类的clone方法(代码里为super.clone())而Intent是通过new的方式创建copy对象。
工厂模式
借助于创建对象的接口,让子类决定实例化。
复杂对象适合使用工厂模式,正常new创建无需使用工厂模式。
使用反射简洁地表示生产子类对象:
Public class ConcreteFactory extends Factory{
/**
**@param clz子类的类对象
**@return T根据子类的类对象实例化的子类
**/
@override
public <T extends Product> T creatProduct(Class<T> clz){
Product p=null;
try{
P=(Product)Class.forName(clz.getName()).getInstance();
}
catch(Exception e){
e.printStackTrace();
}
return (T)p;
}
}
如果只有一个工厂类就可以生产所有product对象的话,可以做成静态工厂。
工厂方法模式依赖抽象的架构,可以根据不同的任务扩展子类。
- 《Android设计模式与源码解析》学习记录二
- 《Android设计模式与源码解析》学习记录一
- 《Android源码设计模式解析与实战》读书笔记(二)
- 《Android 源码设计模式解析与实战》学习笔记
- Android源码设计模式解析与实战
- Android 源码设计模式解析与实战
- Android源码设计模式解析与实战
- 《Android源码设计模式解析与实战》读书笔记(二)——单例模式
- 《Android源码设计模式解析与实战》读书笔记(二十)——适配器模式
- 《Android源码设计模式解析与实战》读书笔记(二十一)——装饰者模式
- 《Android源码设计模式解析与实战》读书笔记(二十二)——享元模式
- 《Android源码设计模式解析与实战》读书笔记(二十三)——外观模式
- 《Android源码设计模式解析与实战》读书笔记(二十四)——桥接模式
- 【读书笔记】Android源码设计模式解析与实战(二)——单例模式
- 《Android源码设计模式解析与实战》读书笔记(二十)
- 《Android源码设计模式解析与实战》读书笔记(二十一)
- 《Android源码设计模式解析与实战》读书笔记(二十二)
- 《Android源码设计模式解析与实战》读书笔记(二十三)
- cvNamedWindow函数 创建窗口
- Swift回忆录-属性
- 《剑指Offer》给我的灵感:图像处理这一路走来
- 国内某一线服装品牌运输单信息接口数据组装(PHP数组处理记录)
- Linux设备驱动开发基础一
- 《Android设计模式与源码解析》学习记录二
- malloc 与Free
- 如何在CentOS 7上修改主机名hostname
- Java编程规范
- IT忍者神龟之数据库设计规范
- 项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”。。 0
- Android内存优化(三)
- 筛选出一些个人常用的快捷键
- windowns的ip安全策略