注:本文为译文,原文出处java-design-patterns-in-stories
原型模式在大量需要使用相似对象的情况下被广泛应用. 原型模式实现对象的克隆,并且设置被更改的功能. 这种方式会消耗更少的资源, 为什么呢?
克隆方法通过创建新的对象并将成员变量值拷贝至新对象. 通常来说, 这种方式并不会比直接new一个对象在成本上有很大的改善. 但是在类的构造函数中, 如果有一些成本高昂的操作, 克隆方法就会带来巨大的效率提升.比如: 如果需要通过查询数据库获获取变量, 那么利用克隆方法就会避免不必要的重复查询,节省很大的开销.
package designpatterns.prototype;
//prototype
interface Prototype {
void setSize(int x);
void printSize();
}
// a concrete class
class A implements Prototype, Cloneable {
private int size;
public A(int x) {
this.size = x;
}
@Override
public void setSize(int x) {
this.size = x;
}
@Override
public void printSize() {
System.out.println("Size: " + size);
}
@Override
public A clone() throws CloneNotSupportedException {
return (A) super.clone();
}
}
//when we need a large number of similar objects
public class PrototypeTest {
public static void main(String args[]) throws CloneNotSupportedException {
A a = new A(1);
for (int i = 2; i < 10; i++) {
Prototype temp = a.clone();
temp.setSize(i);
temp.printSize();
}
}
}
java.lang.Object - clone()
注:本文为译文,原文出处java-design-patterns-in-stories