第126章
小a:“师兄,原型模式应该如何使用?”
大b:“好!因为java中的提供clone()方法来实现对象的克隆,所以prototype模式实现一下子变得很简单。”
以勺子为例:
publicabstractclassabstractspoonimplementscloneable
{
stringspoonname;
publicvoidsetspoonname(stringspoonname){this.spoonname=spoonname;}
publicstringgetspoonname(){returnthis.spoonname;}
publicobjectclone()
{
objectobject=null;
try{
object=super.clone();
}catch(clonenotsupportedexceptionexception){
system.err.println(“abstractspoonisnotcloneable”);
}
returnobject;
}
}
有两个具体实现(concreteprototype):
publicclasssoupspoonextendsabstractspoon
{
publicsoupspoon()
{
setspoonname(“soupspoon”);
}
}
publicclasssaladspoonextendsabstractspoon
{
publicsaladspoon()
{
setspoonname(“saladspoon”);
}
}
调用prototype模式很简单:
abstractspoonspoon=newsoupspoon();
abstractspoonspoon=newsaladspoon();
当然也可以结合工厂模式来创建abstractspoon实例。
在java中prototype模式变成clone()方法的使用,由于java的纯洁的面向对象特性,使得在java中使用设计模式变得很自然,两者已经几乎是浑然一体了。