原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何创建的细节。

客户角色:客户类提出创建对象的请求

抽象原型角色:定义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()应该满足这三个条件。

posted on 2011-01-11 22:27  魔战  阅读(241)  评论(0编辑  收藏  举报