原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何创建的细节。
客户角色:客户类提出创建对象的请求
抽象原型角色:定义clone()方法
具体原型角色:实现clone()方法
public interface Prototype extends Cloneable{
Prototype clone();
}
public class ConcreatePrototype implements Prototype
{
public Object clone()
{
try
{
return super.clone();
}
catch(CloneNotSupportedException e)
{
return null;
}
}
}
public class Client
{
private Prototype prototype;
public void operation(Prototype example)
{
Prototype p=(Prototype)example.clone();
}
}
public class Text
{
public static void main(String[] args)
{
Client client=new Client();
Prototype prototype=new Prototype();
client.operation(prototype);
}
}
克隆必须满足的条件:
a.对任何的对象x,都有:x.clone() != x,即克隆对象与原对象不是同一个对象。
b.对任何的对象x,都有:x.clone().getClass() == x.get
getClass(),即克隆对象与原对象的类型是一样的。
c.如果对象x的equals()方法定义恰当的话,那么x.clone().equals(x)应当是成立的。
在java中实现clone()应该满足这三个条件。