package prototype;
public class GirlFriend implements Cloneable
{
private String name;
private int age;
public void setAge(int age) {
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public String toString()
{
return name+" 年龄是: "+age;
}
public GirlFriend clone() throws CloneNotSupportedException
{
return (GirlFriend) super.clone();
}
}
package prototype;
public class Boy implements Cloneable
{
private String name;
private GirlFriend gf ;
public void setName(String name)
{
this.name = name;
}
public GirlFriend getGF()
{
return gf;
}
public Boy(String name)
{
this.name = name;
gf = new GirlFriend();
gf.setAge(18);
gf.setName("小芳");
}
public String toString()
{
return name+" 的女朋友是:"+gf;
}
public Boy clone() throws CloneNotSupportedException
{
Boy boy = (Boy)super.clone();
boy.gf = gf.clone();
return boy;
}
}
package prototype;
public class Test
{
public static void main(String[] args) throws CloneNotSupportedException
{
Boy boy = new Boy("张三");
System.out.println(boy+" "+boy.hashCode());
Boy b = boy.clone();
b.getGF().setAge(20);
System.out.println(b+" "+b.hashCode());
System.out.println(boy+" "+boy.hashCode());
}
}
/*
* 原型模式主要是clone 深克隆和浅克隆,深克隆就是要将应用的对象也拷贝进来
* 他们的引用对象不同。而浅克隆只拷贝引用,也就是说他们引用的对象还是同一个。
* 深拷贝中,类中就必须将引用的对象拷贝一份,可以在clone方法中拷贝 也可以用
* 一个私有的构造方法拷贝,但是必须在clone方法中给他赋值。
*/
分享到:
相关推荐
《prototype_1.7.3.js:JavaScript框架的里程碑》 在JavaScript的世界里,Prototype库是一个不可或缺的重要组成部分,尤其在Web开发领域,它为开发者提供了强大的功能和便利性。Prototype_1.7.3.js是这个库的一个...
Prototype是JavaScript库,它为浏览器环境提供了强大的对象扩展和功能,尤其在处理DOM(文档对象模型)和Ajax交互时。这个压缩包包含了Prototype库的多个版本的手册和源代码文件,便于开发者理解和使用。 首先,...
标题"prototype_PrototypeJS1.6_"中提到的"Prototype"是一个JavaScript库,它为JavaScript编程提供了一套丰富的工具集,主要用于简化DOM操作、创建Ajax应用以及实现对象的继承机制。"1.6版本"表明这是该库的一个特定...
Prototype.js 是一个广泛使用的JavaScript库,它为JavaScript语言增加了许多实用的功能,使开发Web应用程序变得更加简单。这个压缩包包含了Prototype的1.6.0版本,包括中文版和英文版的文档,以及源代码文件。 首先...
**Prototype 框架详解** Prototype 是一个广泛使用的JavaScript库,设计目的是为了简化JavaScript的开发,尤其是处理DOM操作、AJAX交互以及事件处理等方面的工作。它通过提供一系列实用的工具函数和面向对象的特性...
### Prototype的Ajax介绍 #### 一、Prototype框架与Ajax **Prototype** 是一款JavaScript库,其设计目的是为了简化客户端脚本编程。它提供了一系列高级功能,使得开发人员能够更加高效地构建动态网页应用。其中,*...
标题提及了两个版本的Prototype文档,分别是"Prototype_1.4.doc"和"Prototype_1.5.1.chm"。Prototype是JavaScript库的一个早期且广泛使用的版本,它提供了许多实用的功能,如对象扩展、事件处理、Ajax操作等,极大地...
Prototype JavaScript 框架是Web开发中的一个关键工具,它为JavaScript编程提供了许多实用的类库函数和设计模式。这个“Prototype 1.6中文手册 chm+prototype 1.6.js源码 最新版”正是面向希望深入学习和掌握...
Prototype 是一个广泛使用的JavaScript库,它为浏览器端的开发提供了许多强大的功能,特别是对于处理DOM操作、Ajax交互以及对象扩展等方面。这个“prototype帮助中文文档”涵盖了Prototype库的核心概念、方法和最佳...
在JavaScript中,`prototype`是一个核心概念,它与对象继承紧密相关。`prototype`机制是JavaScript实现面向对象编程的关键部分,允许我们为对象添加或扩展属性和方法。在这个"非常有用的prototype实例"中,我们可以...
**Prototype JavaScript 库** Prototype 是一个广泛使用的JavaScript库,它为Web开发提供了强大的工具和功能。这个库的主要目标是简化JavaScript编程,通过提供面向对象的语法、强大的DOM操作以及Ajax功能,来提升...
《Prototype开发者手册(中文版)》是一本专为JavaScript开发者准备的重要参考资料,它详细介绍了Prototype JavaScript框架的使用方法和核心概念。Prototype是一个广泛使用的开源JavaScript库,它的目标是简化...
Prototype.js 是一个广泛使用的JavaScript库,它为JavaScript编程提供了许多实用的功能,极大地简化了DOM操作、事件处理、Ajax交互以及对象扩展等任务。这个压缩包包含的“prototype.js”文件就是Prototype.js的核心...
《Prototype 1.5.1使用手册》是针对JavaScript库Prototype的一个详细指南,该库是Web开发中的一个强大工具,尤其在处理DOM操作、Ajax交互和函数增强方面表现卓越。本手册以.chm(Compiled Help Manual)格式提供,...
Prototype是JavaScript库,它扩展了JavaScript的基本对象,提供了强大的面向对象编程功能,使得在JavaScript中进行复杂的编程操作变得更加简单。这个“prototype从入门到精通”的教程涵盖了从基础概念到高级特性的...
### Prototype框架概览 #### 一、Prototype框架简介 **Prototype** 是一款JavaScript库,它为Web开发提供了强大的工具集,特别是在实现Ajax交互方面。该文档由知名的作者和开发者Marty Hall编写,针对的是...
**Prototype 1.6 中文版CHM**是JavaScript开发者的重要参考资料,它是Prototype.js库的中文版帮助文档。Prototype.js是一个强大的JavaScript库,它为Web开发提供了许多实用的功能,简化了DOM操作,增强了对象和数组...
### Prototype 1.3 源码解读 #### 前言 Prototype 是一个轻量级的 JavaScript 库,它简化了 DOM 操作,并提供了一系列便捷的方法来处理对象、数组等基本类型。版本 1.3 相对于之前的 1.2 版本有了不少改进与增强,...