(Prototype)原型模式的Java实现(转)
蚂蚁 ...
蚂蚁 ...
|
class ConcretePrototype02 implements Cloneable {
private String name;
private ArrayList<String> nameList = new ArrayList<String>();
public ConcretePrototype02(String name) {
this.name = name;
this.nameList.add(this.name);
}
//添加nameList中的对象
public void setName(String name) {
this.nameList.add(name);
}
public ArrayList<String> getNameList() {
return this.nameList;
}
//覆盖Object基类中的clone()方法,并扩大该方法的访问权限,具体化返回本类型
public ConcretePrototype02 clone() {
ConcretePrototype02 self = null;
try {
self = (ConcretePrototype02) super.clone();
//以下这句是实现深拷贝的关键
// self.nameList = (ArrayList<String>) this.nameList.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return self;
}
}
//测试类
public class Client {
public static void main(String[] args) {
ConcretePrototype02 prototype02 = new ConcretePrototype02("蚂蚁 ...");
System.out.println(prototype02.getNameList());
//通过clone获得一个拷贝
ConcretePrototype02 fromClone02 = prototype02.clone();
fromClone02.setName("小蚂蚁 ...");
System.out.println(fromClone02.getNameList());
System.out.println(prototype02.getNameList());
}
}
拷贝之前的原型: [蚂蚁 ...]
拷贝得到的对象: [蚂蚁 ..., 小蚂蚁 ...]
拷贝之后的原型: [蚂蚁 ..., 小蚂蚁 ...]
|
拷贝之前的原型: [蚂蚁 ...]
拷贝得到的对象: [蚂蚁 ..., 小蚂蚁 ...]
拷贝之后的原型: [蚂蚁 ...]
|
class ConcretePrototype01 implements Cloneable {
private String name;
public ConcretePrototype01(String name) {
this.name = name;
}
public void getName() {
System.out.println(name);
}
//覆盖Object基类中的clone()方法,并扩大该方法的访问权限,具体化返回本类型
public ConcretePrototype01 clone() {
ConcretePrototype01 self = null;
try {
self = (ConcretePrototype01) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return self;
}
}
//测试类
public class Client {
public static void main(String[] args) {
ConcretePrototype01 prototype01 = new ConcretePrototype01("蚂蚁 ...");
prototype01.getName();
//通过clone获得一个拷贝
ConcretePrototype01 fromClone01 = prototype01.clone();
fromClone01.getName();
}
}
转载于:https://www.cnblogs.com/andyboy/p/3445205.html
(Prototype)原型模式的Java实现(转)相关推荐
- JavaScript 面向对象 (prototype 原型模式)
一. JavaScript 设计思想 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览 ...
- 设计模式-创建型模式-原型模式(Java)(创建重复对象)
目录 原型模式 1 介绍 2 实现 具体实现步骤 原型模式 原型模式(Prototype Pattern)是⽤于创建重复的对象,同时⼜能保证性能.这种类型的设计模式属于创建型模式,它提供了⼀种创建对象 ...
- Prototype 原型模式
一.意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.(Specify the kinds of objects to create using a prototypical in ...
- Prototype原型模式(创建型模式)
1.原型模式解决的问题 现在有一个抽象的游戏设施建造系统,负责构建一个现代风格和古典风格的房屋和道路. 前提:抽象变化较慢,实现变化较快(不稳定) 整个抽象的游戏设施建造系统相对变化较慢,本例中只有一 ...
- java 设计模式 prototype_Java设计模式之Prototype原型模式
一.场景描述 创建型模式中,从工厂方法模式,抽象工厂模式,到建造者模式,再到原型模式,我的理解是,创建对象的方式逐步从编码实现转向内存对象处理. 例如,在"仪器数据采集器"的子类/ ...
- 设计模式 - Prototype 原型模式
微信搜索[三太子敖丙]关注这个贪财好色的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. 前言 在设计模 ...
- prototype原型模式
/** * 原型模式 Prototype * 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 */ 需求: public class Resume { /** * 要求:一个简历类,必须 ...
- C++设计模式-Prototype原型模式
作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C+ ...
- c语言 prototype_(创建型模式)Prototype——原型模式
1.意图 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2.核心思想 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象. ...
最新文章
- php投票系统制作,php简单的投票系统[原创]
- 计算机主机内部防尘装置,一种计算机主机用防尘装置的制作方法
- form-validation-engine中的正则表达式
- h3c的gpu安装linux系统,h3c服务器u盘安装linux系统安装
- webpack-dev-server 搭建本地服务以及浏览器实时刷新
- [渝粤教育] 四川大学 食物营养学 参考 资料
- 腾讯云函数使用方法及注意事项
- bp神经网络算法的优缺点,基于bp的神经网络算法
- 2022年天猫女王节的优惠力度比肩618年中大促购物节
- Mysql 入门学习总结
- docker 容器Exited【数字报错】问题
- 聚类算法K-Means K-Medoids GMM Spectral clustering,Ncut
- ArcGIS 中的标准分类方法
- RapidScada免费开源Scada组态软件系列教程5-系统进阶
- 辅助方法、模型、视图数据
- 益聚星荣:贝壳三季报曝光了二手房市场有多惨
- 关于如何定制开发Android第三方ROM,最全开发教程、原理阐述
- SQL MINUS的用法
- Problematic frame: C [sigar-amd64-winnt.dll+0x14ed4]
- 中国方言输入法Rime入门