设计方式之略见一斑(原型模式Prototype)

设计模式之略见一斑(原型模式Prototype)
原型模式允许一个对象再创建另外一个可定制的对象,无需知道任何创建的细节,直接通过调用clone来实现对象的复制,此模式其实跟对象的克隆是一样的,该模式就是实现方法clone

public abstract class AbstractObject implements Cloneable   
{    
  String objectName;    
  
  public void setObjectName(String spoonName) {this.objectName = objectName;}   
  public String getObjectName() {return this.objectName;}   
  
  public Object clone()    
  {   
    Object object = null;   
    try {   
      object = super.clone();   
    } catch (CloneNotSupportedException exception) {   
      System.err.println("AbstractObject is not Cloneable");   
    }   
    return object;   
  }   
}  


其具体实现类只要继承这个就可以



功能:

  原型模式利用clone能够动态的抽取当前工作对象运行机制时的状态并且克隆到新的对象中,新对象就可以在此基础上进行操作而不损坏原有对象,而new对象只能得到一个初始化的对象,而在实际应用中,这往往是不够的。

  特别当你的系统需要良好的扩展性时,在设计中使用原型要求民是很有必要的,比如说,当你的系统可以让客户自定义自己的需要的类别,但是这种类别的初始化可能需要传递多于已有类别的参数,而这使得用它的类将不知道怎么来初始化(因为已经写死了),除非对类进行修改。

所以clone方法是不能使用构造函数来代替的。



举个例子:

  理财产品系统管理员,想要管理全国理财数据,而这组数据是存在在数据中的,我们会将这一组数据封装在一个类中,然后将此类的一个实例作为参数传入进行分析。假设这个时候我们还想做另外一个分析,以对分析结果进行比较,这时对封装有clone要比再次连接数据库得到数据好的多,并且还要快之。


原文:http://lgh3292.iteye.com/blog/585204