原型模式是一种创建型设计模式,用于在保证性能的情况下创建新的对象实例。原型模式允许一个对象再创建另外一个可定制的对象,而无需知道创建的细节。其工作原理是通过拷贝实现对象创建,即clone()。
但是我们通过new也能创建一个属性一样的对象,两者的区别是什么呢?
- new操作符:用于创建一个新的对象实例。该操作会调用构造函数以初始化对象并分配所需的内存空间,返回指向该对象的引用。new操作符需要调用构造函数来初始化对象,并且会分配独立的内存空间来存储新对象。
- 克隆方法:克隆方法是Object类中定义的一种浅拷贝操作方法。该方法使用当前对象的副本来创建一个新的对象,而无需调用任何构造函数,并将其返回给调用者。与new不同的是,clone创建的是原始对象的复制品。这个过程需要对象实现 Cloneable 接口(否则会抛出 CloneNotSupportedException 异常)和覆盖 clone() 方法,以便在运行时复制对象的所有字段。克隆方法可以在已有对象的内存地址上创建新对象,避免构造器的执行,并且可以快速地复制对象的所有属性值。
总结来说,通过“new”操作符创建新对象需要调用构造函数并分配独立的内存空间,而克隆对象则是在已有对象的内存地址上创建新对象,避免构造器的执行,并且可以快速地复制对象的所有属性值。
下面是Clone的例子(浅拷贝,基础数据类型是值传递,其他对象则是引用传递)
Friend类
public class Friend {
String name;
@Override
public String toString() {
return "Friend{" +
"name='" + name + '\'' +
'}';
}
public Friend(String name) {
this.name = name;
}
}
标签:Sheep,Java,name,对象,colour,模式,原型,Friend,friend
From: https://www.cnblogs.com/yan061/p/17932867.html