java设计模式(原型模式)

本文介绍了Java设计模式中的原型模式,详细解释了如何通过复制现有实例而非新建实例来创建对象。文章探讨了浅复制与深复制的区别,并提供了实现原型模式的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  创建型模式中还有一种与工厂方法模式完全不同的模式,就是原型模式。 
  原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。 
  用面向对象的方法来说就是,我们先建立一个原型,然后通过对原型进行复制和修饰的方法,就可以产生一个与原型相似的新对象。即:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 
  在java中复制模型对象是通过clone()方法实现的。其实,这个方法可以是任意名字,比如cloneA(),cloneB()等。不过,一般应该使用clone()方法,这样做有两个原因:一是出于习惯,复制对象当然应该是clone();二是,在许多语言中的基础类中,比如做为所有类基础的Object,都定义了clone()方法。因此,实现原型模式的方法一般应该是原型类继承了Cloneable接口,在具体原型类中需要实现clone()方法,完成对象的自我复制。 

  程序代码: 
Java代码   收藏代码
  1. public class Prototype implements Cloneable{  
  2.     
  3.   /** 
  4.   /*浅复制 
  5.   */  
  6.   public Object clone() throws CloneNotSupportedException{  
  7.   
  8.     Prototype prototype = (Prototype)super.clone();  
  9.     return prototype;  
  10.   }  
  11. }  


  调用Prototype模式很简单: 
  Prototype obj = new Prototype(); 
  Prototype obj2 = obj.clone();//复制 

  从以上的使用可以看出,在java中Prototype模式变成clone()方法的使用,此方法执行的是该对象的“浅复制”,而不是“深复制”操作。 
  复制分为两种:浅复制和深复制 
  ●浅复制:将一个对象复制之后,生成一个新的对象,新对象的所有成员变量(基本类型和引用类型)都含有与原来对象相同的值,如果原有对象的成员变量是基本数据类型,就会将这个变量的值复制一份到新对象里面,如果原有对象的成员变量是引用数据类型,那么这个引用指向的对象不会新生成一份,而是,在新对象里面的这个引用与原有对象的引用指向的是同一个对象。 
  ●深复制:将一个对象复制之后,生成一个新的对象,新对象的基本数据变量含有与原有对象相同的值,如果原有对象的成员变量是引用数据类型,在新对象里面,这些引用变量将指向被复制过的新对象,而不再是指向原有的那些被引用的对象,深复制把要复制的对象所引用的对象都复制一遍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值