内容简介:用于创建重复的对象,同时又能保证性能。通俗的讲,原型模式就是克隆对象,直接copy字节码,不走构造方法,性能非常高。ORM中经常用到。只支持9种数据类型的深拷贝: 8大基本类型实现Cloneable接口,并且重写clone()方法。
用于创建重复的对象,同时又能保证性能。通俗的讲,原型模式就是克隆对象,直接copy字节码,不走构造方法,性能非常高。ORM中经常用到。
注意
只支持9种数据类型的深拷贝: 8大基本类型 (int long float double boolean char short byte )
+ String
其他(List等)数据类型默认都是浅拷贝,但是我们也能通过他们自身的clone方法来深拷贝。
List list = new ArrayList();
List cloneList = (List) ((ArrayList) list).clone();
复制代码
Prototype.java
实现Cloneable接口,并且重写clone()方法。
public class Prototype implements Cloneable{
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
复制代码
注:如果不实现该接口而直接调用clone()方法会抛出CloneNotSupportedException异常
PeoplePrototype.java
人原型,用来做被拷贝的对象。
public class PeoplePrototype extends Prototype{
private int age;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
复制代码
Main.java
public class Main {
public static void main(String[] args) {
PeoplePrototype prototype = new PeoplePrototype();
prototype.setAge(20);
prototype.setName("FantJ");
try {
PeoplePrototype clone = (PeoplePrototype)prototype.clone();
System.out.println(clone.getAge());
System.out.println(clone == prototype);
System.out.println(clone+" "+prototype);
System.out.println(clone.getClass() +" "+ prototype.getClass());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
复制代码
控制台打印:
20 false com.fantj.prototype.ConcretePrototype@6d6f6e28 com.fantj.prototype.ConcretePrototype@135fbaa4 class com.fantj.prototype.ConcretePrototype class com.fantj.prototype.ConcretePrototype 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大型网站技术架构
李智慧 / 电子工业出版社 / 2013-9-1 / 59.00元
《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。 《大型网站技术架构:核心原理与案例分析》不仅适用于指导网站工程师、架构师进行网站技术架构设计,也可用于指导产品经......一起来看看 《大型网站技术架构》 这本书的介绍吧!