第七篇 设计模式--原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新对象。

好处:新实例持有原实例的状态(各变量的值)

类型一:浅复制

代码:

package prototype_model.shallowcopy;

/**
 * @author naivor
 *		原型模式-浅复制-场景类
 */
public class ShallowCopy {
	public static void main(String [] args) {
		Original originalA=new Original();
		Original originalB=(Original) originalA.clone(); //originalB是复制originalA的引用而得到,持有originalA的状态
	}

}
/**
 * 
 * @author naivor
 *		原型模式-浅复制-克隆类
 */
class  Original implements Cloneable{
	private int a;
	private String  str;
	
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;
	}
	public String getStr() {
		return str;
	}
	public void setStr(String str) {
		this.str = str;
	}
	
	@Override
	protected Object clone() {
		Object object=null;
		try{
			
			object=(Object)super.clone();
		}catch(CloneNotSupportedException e){
			e.printStackTrace();
		}
		
		return object;
	}
}

类型二:深复制

代码:

package prototype_model.deepcopy;

/**
 * @author naivor 原型模式-深复制-场景类
 */
public class DeepCopy {
	public static void main(String[] args) {
		Original originalA = new Original();
		Original originalB = (Original) originalA.clone(); // originalB是复制originalA的变量值而得到,持有originalA的状态
	}

}

/**
 * 
 * @author naivor 原型模式-深复制-克隆类
 */
class Original implements Cloneable {
	private int a;
	private String str;

	public int getA() {
		return a;
	}

	public void setA(int a) {
		this.a = a;
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	@Override
	protected Object clone() {
		Original object = new Original();

		object.a = this.a;
		object.str = this.str;

		return object;
	}
}


区别:浅复制得到的是原对象的引用,而深复制有自己的内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值