如何实现原型模式?

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)

我认为这是深刻的复制.所以,有人可以帮我解决这个问题吗?

Jer*_*erg 1

首先,要使其正常工作,您的 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)