设计模式7-原型模式

原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
实现Cloneable接口,表示可能被拷贝,重写clone()方法表示可以被拷贝。
实现接口,重写方法就完成了原型模式。
浅拷贝:clone()只是拷贝本对象,对象内部的引用对象、数组等都不拷贝,基本类型和String会进行拷贝。
深拷贝:将对象内部的引用,也进行拷贝。
优点:
1、性能优良,实在内存进行二进制流的拷贝,要比直接new一个对象的性能好很多,特别是要在一个
循环体中产生大量的对象时,原型模式可以更好的体现优点。
2、逃避构造函数的约束,直接内存拷贝,构造函数不执行。
使用场景:
1、资源优化,类初始化需要消耗非常多的资源,资源包括数据、硬件资源等;
2、性能和安全要求的场景,new一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式;
3、一个对象多个修改者的场景,各个调用者都需要修改其值,可以考虑用原型模式拷贝多个对象供调用者使用。

//原型模式
public class ProtoTypeClass implements Cloneable {

	private ArrayList<String> list = new ArrayList<>();
	@Override
	protected ProtoTypeClass clone() {
		ProtoTypeClass pro = null;
		try {
			pro= (ProtoTypeClass) super.clone();
			pro.list = (ArrayList<String>) this.list.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		return pro;
	}
	
}

猜你喜欢

转载自blog.csdn.net/zhuozi0810/article/details/89021496
今日推荐