创建型模式之一
定义:用唤醒实例置顶创建对象的种类,并通过拷贝这些原形创建新的对象;
使用场景:
1,过多的浪费资源
2,过多的数据准备和权限
3,一个对象需要提供给其他对象访问,并且可以修改值(保护性拷贝,浅拷贝)
缺点:直接在内存中拷贝,不走构造方法
优点:在内存中二进制流拷贝,比直接new性能好很多,尤其是在循环体产生大量的对象时,性能更为明显
简单实现:
/**
* 原型设计模式 : 如果一个对象的创建消耗很多资源 用拷贝
*clone 和 new 那个开销少 就用谁
* intent 是 new 的
*/
public class ProtoTypeMode {
}
class FileManager implements Cloneable {
//文件的名字
private String mFileName;
//文件的图片的集合
private ArrayList<String> mImageList = new ArrayList();
public FileManager() {
}
@Override
protected FileManager clone() throws CloneNotSupportedException {
FileManager fileManager = (FileManager) super.clone();
fileManager.mFileName = this.mFileName;//基本类型
//浅拷贝 会随值的改变 而改变已有对象的值
// fileManager.mImageList=this.mImageList;
//深拷贝 对引用类型的字段也进行拷贝 只更改创建对象的数据 对原有的数据不会更改
fileManager.mImageList = (ArrayList<String>) this.mImageList.clone();
return fileManager;
}
}