书城计算机网络大话设计模式
8183300000126

第126章 3 原型模式应如何使用

小A:“师兄,原型模式应该如何使用?”

大B:“好!因为Java中的提供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();

当然也可以结合工厂模式来创建AbstractSpoon实例。

在Java中Prototype模式变成clone()方法的使用,由于Java的纯洁的面向对象特性,使得在Java中使用设计模式变得很自然,两者已经几乎是浑然一体了。