use*_*546 5 java design-patterns prototype-pattern
原型模式的目标是通过降低创建成本来克隆对象.这是一个例子:
class Complex {
int[] nums = {1,2,3,4,5};
public Complex clone() {
return new Complex();//this line create a new object, so is it violate the objective of prototype ?//
}
}
class Test2 {
Complex c1 = new Complex();
Complex makeCopy() {
return (Complex)c1.clone();// Is it actually create a new object ? based on the clone method in Complex class? //
}
public static void main(String[] args) {
Test2 tp = new Test2();
Complex c2 = tp.makeCopy();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是深刻的复制.所以,有人可以帮我解决这个问题吗?
首先,要使其正常工作,您的 Complex 类需要实现Cloneable标记接口,以向 Object.clone() 方法指示该方法制作该类实例的字段对字段副本是合法的。然后您需要重写 Object.clone() 方法来指定复制行为:
public Complex clone(){
Complex clone = (Complex)super.clone();
clone.nums = this.nums;
return clone;
}
Run Code Online (Sandbox Code Playgroud)