设计模式之Prototype

public abstract class AbstractSpoon implements Cloneable
{
  String spoonName;

  public void setSpoonName(String spoonName) {this.spoonName = spoonName;}
  public String getSpoonName() {return this.spoonName;}

  public Object clone()
  {
    Object object = null;
    try {
      object = super.clone();
    } catch (CloneNotSupportedException exception) {
      System.err.println("AbstractSpoon is not Cloneable");
    }
    return object;
  }
}

有个具体实现(ConcretePrototype):

public class SoupSpoon extends AbstractSpoon
{
  public SoupSpoon()
  {
    setSpoonName("Soup Spoon");
  }
}

调用Prototype模式很简单:

AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon2 = spoon.clone();


我在Jbuilder2005下试验了这些代码,编译器居然报错(指向spoon.clone();),提示incompatible types;Found:java.lang.Object,required:spoon.AbstractSpoon
不解ing。。。


// 在此输入java代码

知道原因了。。
源码还不是很准确的啊~~

Prototype关键在于了解对象的值引用 和值传递等问题,以及和状态相关的一些应用。