一.原型模式的定义:
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
二.原型模式的使用分类:
1.浅拷贝:
这种拷贝不是将原始对象的所有字段重新构造一份,而是副本对象引用原始对象的字段。
2.深拷贝:
将原始对象的所有字段都重新构造一份。
三.使用方式:
1> 模型通过实现Cloneable接口
2> 重写clone方法(注意:clone()是继承自Object的 )
例如:浅拷贝:
/**
* Created by Long on 2016/8/31.
*/
public class Domain implements Cloneable {
private String name ;
private String age;
@Override
protected Domain clone() {
Domain domain = null ;
try {
domain = (Domain) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return domain ;
}
}
四.使用场景:
大部分安卓程序员都遇到过这样的场景:当修改个人资料,并且需要进行网络请求,而在网络请求之前需要对一个对象进行赋值操作(这时本地对象已经变了),如果网络请求修改成功还好,但是如果失败了,那会出现什么情况呢? 修改操作失败,但是本地数据却改变了!! 这是决不允许的!
那么有什么好的解决办法呢?
clone正是解决这样的情况好办法,首先,clone一个这样的对象,然后修改这个clone对象的赋值,如果网络请求成功了,那么把这个clone对象赋值给我们本地保存的对象,失败则不用做操作!
这样就很简单了,而且clone也很高效。