//测试类
public class TestPrototype {
/**
* @param args
*/
public static void main(String[] args) {
Sheep d1=new DuoLiSheep();
Sheep d2=new DuoMeiZiSheep();
System.out.println(d1.SheepName);
System.out.println(d2.SheepName);
}
}
//抽象原型羊,有一个公开访问的可读可写的方法
//java的cloneable实现了copy的方法,正好在这个模式用上,当然在此基础上,必须得实现CloneAble
//接口的克隆方法了
abstract class Sheep implements Cloneable {
/*
Sheep(){
System.out.println("Sheep");
};
*/
String SheepName;
public void SetSheepName(String _SheepName)
{
this.SheepName=_SheepName;
}
public String GetSheepName()
{
return SheepName;
}
public Object Clone()
{
Object obj=null;
if(null==obj)
{
try{
obj=super.clone();
}catch(CloneNotSupportedException e)
{
return obj;
}
}
return obj;
}
}
//发出要克隆的命令(多利羊)
class DuoLiSheep extends Sheep
{
public DuoLiSheep()
{
SetSheepName("DuoLiSheep");
}
}
//发出要克隆的命令(多美滋羊)
class DuoMeiZiSheep extends Sheep
{
public DuoMeiZiSheep()
{
SetSheepName("DuoMeiZiSheep");
}
}