一.什么是原型模式
原型模式用于创建重复的对象,同时又能保证性能,提供了创建对象的最佳方式。
二.为什么要原型模式
当创建对象的代价比较大时,可以使用原型模式创建对象。因为new一个对象的时间比克隆一个对象的时间要的多。
三.原型模式应该具备的条件
需要一个原型接口,用于创建当前对象的克隆,原型类自己创建自己的克隆对象。
四.原型demo
public class Demo {
public static void testNew(int size) {
long start = System.currentTimeMillis();
for (int i = 0; i < size; i++) {
User t = new User();
}
long end = System.currentTimeMillis();
System.out.println("new的方式创建耗时:" + (end - start));
}
public static void testClone(int size) throws CloneNotSupportedException {
long start = System.currentTimeMillis();
User t = new User();
for (int i = 0; i < size; i++) {
User temp = (User) t.clone();
}
long end = System.currentTimeMillis();
System.out.println("clone的方式创建耗时:" + (end - start));
}
public static void main(String[] args) throws Exception {
testNew(1000);
testClone(1000);
}
}
/**
* 测试普通new方式创建对象和clone方式创建对象的效率差异!
* 如果需要短时间创建大量对象,并且new的过程比较耗时。则可以考虑使用原型模式!
*/
class User implements Cloneable { //用户
public User() {
try {
Thread.sleep(0); //模拟创建对象耗时的过程!
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected Object clone() throws CloneNotSupportedException {
Object obj = super.clone(); //直接调用object对象的clone()方法!
return obj;
}
}
本文介绍了设计模式中的原型模式,阐述了其用于高效创建重复对象的原理,并详细讲解了为何在对象创建成本较高时应选用原型模式。同时,文章提到了实现原型模式需要满足的条件,包括原型接口和自创建克隆对象的能力。
484

被折叠的 条评论
为什么被折叠?



