大话设计模式
字体: 16 + -

第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中使用设计模式变得很自然,两者已经几乎是浑然一体了。