`
行者买刀
  • 浏览: 191498 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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

    博客分类:
  • J2SE
阅读更多

原型模式允许一个对象再创建另外一个可定制的对象,无需知道任何创建的细节,直接通过调用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要比再次连接数据库得到数据好的多,并且还要快之。

 

分享到:
评论
1 楼 bo_hai 2011-02-16  
真好!学习学习!

相关推荐

    设计模式之略见一斑(Observer观察者模式)

    NULL 博文链接:https://lgh3292.iteye.com/blog/600905

    21种设计模式略见一斑

    NULL 博文链接:https://teddywang.iteye.com/blog/769122

    循环冗余校验-概念 算法 应用

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,...例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。

    CRC16或32校验

    CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码...例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑

    CRC算法和实现

    例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。 差错控制理论是在代数理论基础上建立起来的。这里我们着眼于介绍CRC的算法与实现,对原理只能...

Global site tag (gtag.js) - Google Analytics