原型模式(prototype)

原型模式也叫克隆模式(clone),类似于new 但是与new 不同,没一次new一个新的对象是都要调用系统的底层的东西,但是克隆不需要,只是将原型克隆。克隆出来的对象和原型一模一样,但是可以对克隆出来的对象进行修改。new的话每个对象的值是被初始化好的。生成大量类似对象时可以使用原型模式。
注意:克隆的对象与原型对象就是不同的对象,但是值一模一样
能克隆的类必须实现Cloneable 接口

import java.sql.Date;

public class ProtoType {   //测试
	public static void main(String[] args) throws CloneNotSupportedException {
		Date date = new Date(12333);
		Sheep sheep = new Sheep("多利",date);
		//克隆
		System.out.println(sheep);
		System.out.println(sheep.getName());
		System.out.println(sheep.getBirthday());
		Sheep sheep1 = (Sheep) sheep.clone();
		System.out.println(sheep1);
		System.out.println(sheep1.getName());
		System.out.println(sheep1.getBirthday());
	}

}
class Sheep implements Cloneable{
	private String name;
	private Date birthday;
	
	//克隆方法
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public Sheep(String name, Date birthday) {
		super();
		this.name = name;
		this.birthday = birthday;
	}
	
}

注:上述的克隆是“浅克隆”
sheep和sheep1都是用了date变量,他们用的是同一个引用,当sheep的birthday改变时sheep1的birthday也会改变
在这里插入图片描述

深克隆---------------修改clone()函数
在这里插入图片描述

//克隆方法 @Override protected Object clone() throws CloneNotSupportedException { //克隆出羊 Object ob= super.clone(); Sheep s = (Sheep)ob; //克隆生日 Date birth = (Date) this.birthday.clone(); s.setBirthday(birth); return s; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值