今天下载了个设计模式看,prototype模式就两页纸,看过了也没看出来它到底做什么,比较郁闷。我就不清楚那个copy方法到底做了什么?没有copy方法不行吗?
定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. //通过拷贝创建新的对象跟通过继承创建有什么区别呢?
Prototype 模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的
细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象
通过请求原型对象拷贝它们自己来实施创建。
如何使用?
因为Java 中的提供clone()方法来实现对象的克隆(具体了解 clone()按这里),所以
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");
}
}
public class SaladSpoon extends AbstractSpoon
{
public SaladSpoon()
{
setSpoonName("Salad Spoon");
}
}
调用 Prototype 模式很简单:
AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon = new SaladSpoon();