原型设计模式——分身术

cover.jpg

创建型模式之一

定义:用唤醒实例置顶创建对象的种类,并通过拷贝这些原形创建新的对象;

使用场景:
1,过多的浪费资源
2,过多的数据准备和权限
3,一个对象需要提供给其他对象访问,并且可以修改值(保护性拷贝,浅拷贝)

缺点:直接在内存中拷贝,不走构造方法

优点:在内存中二进制流拷贝,比直接new性能好很多,尤其是在循环体产生大量的对象时,性能更为明显

简单实现:

/**
 * 原型设计模式 : 如果一个对象的创建消耗很多资源 用拷贝
 *clone 和 new 那个开销少 就用谁
 * intent  是 new 的
 */
public class ProtoTypeMode {
}


class FileManager implements Cloneable {
    //文件的名字
    private String mFileName;
    //文件的图片的集合
    private ArrayList 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) this.mImageList.clone();
        return fileManager;
    }
}

如有出入,望大佬扶正,谢谢!!!!

你可能感兴趣的:(原型设计模式——分身术)