02【创建型】原型模式
原型模式(克隆对象)
用于创建重复的对象,用克隆对象的方式代替new 关键字的使用。
用一个已经存在的实例创建对象,通过复制该对象来创建一个原型相同或者相似的新对象
实现:原有对象通过实现Cloneable 重写父类clone()方法
//对象实现Cloneable 重写父类的clone方法
public class Student implements Cloneable {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object clone() {
Object clone = null;
try {
clone = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
}
//测试 分别用new的方式与clone的方式 创建100个相同的对象需要的毫秒数
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println(start);
for (int i = 0;i<100;i++) {
Student student = new Student();
student.setId("1");
student.setName("mrc");
System.out.println(student.getId());
System.out.println(student.getName());
}
long end = System.currentTimeMillis();
System.out.println(end);
System.out.println("总耗时:"+(end-start));
}
//通过克隆的方式创造相同的对象进行测试
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println(start);
Student student = new Student();
student.setId("1");
student.setName("mrc");
for (int i = 0;i<100;i++) {
Student student1 = (Student) student.clone();
System.out.println(student1.getId());
System.out.println(student1.getName());
}
long end = System.currentTimeMillis();
System.out.println(end);
System.out.println("总耗时:"+(end-start));
}
但行好事,相信技术,转载请注明出处