文档章节

设计模式----原型模式_深度克隆

 青盲
发布于 2017/06/11 18:36
字数 272
阅读 4
收藏 0
import java.util.*;

class Person implements Cloneable{                                 //人类 实现 克隆接口
	private int id;                                            //编号
	private String name;                                       //姓名
	private List<String> friends;                              //朋友列表

	public Person(){
		super();
	}
	public Person(int id, String name, List<String> friends){
		super();
		this.id = id;
		this.name = name;
		this.friends = friends;
	}
	public int getId(){
		return this.id;
	}
	public void setId(int id){
		this.id = id;
	}
	public String getName(){
		return this.name;
	}
	public void setName(String name){
		this.name = name;
	}
	public List<String> getFriends(){
		return this.friends;
	}
	public void setFriends(List<String> friends){
		this.friends = friends;
	}
	public Person clone(){                                      //克隆方法
		Person person = new Person();
		person.id = this.id;
		person.name = this.name;
		List<String> friends = new ArrayList<String>();
		for(String friend : this.getFriends()){
			friends.add(friend);                        //克隆对象的引用指向内容
		}
		person.setFriends(friends);
		return person;
	}

	public String toString(){
		return "Person [id=" + id + ", name=" + name + ", friends=" + this.getFriends() + "]";
	}
}

public class MainClass{
	public static void main(String [] args){
		Person person1 = new Person();                      //创建人类1
		person1.setId(1);                                   //设置人类1编号
		person1.setName("ZhangSan");                        //设置人类1名称
		List<String> friends = new ArrayList<String>();     //创建朋友列表
		friends.add("WangWu");                              //列表添加值
		person1.setFriends(friends);                        //设置人类1拥有朋友列表
		System.out.println("person1=" + person1);

		Person person2 = person1.clone();                   //克隆人类1为人类2
		System.out.println("person2=" + person2);

		friends.add("ZhaoLiu");
		person1.setFriends(friends);                        //更新人类1朋友列表
		System.out.println("person1=" + person1);
		System.out.println("person2=" + person2);
	}
}

 

© 著作权归作者所有

粉丝 0
博文 20
码字总数 2649
作品 0
海淀
程序员
私信 提问
设计模式7——Prototype设计模式

Prototype原型设计模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。Prototype原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何关于对象创建的...

小米米儿小
2013/12/11
56
0
设计模式深入学习---Prototype原型模式

今天我们继续来聊下Prototype原型模式。这篇应该是关于工厂设计模式的最后一篇。下次就往内部讲解结构类型的设计模式。 首先我们说下Prototype原型模式的用法。Prototype原型模式主要是用来处...

Java小铺
2018/08/24
0
0
小菜学设计模式——设计模式总结之创建型

1、面向过程与面向对象 1)面向过程通过划分功能模块,通过函数间相互调用来实现,但需求变化时就需要更改函数,而你改动的函数有多少地方在调用她呢?关联多少数据,这是很不容易弄得清楚地...

learn_more
2015/07/05
177
0
初探Java设计模式1:创建型模式(工厂,单例等)

Java 设计模式 转自https://javadoop.com/post/design-pattern 一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写...

你的猫大哥
2017/05/23
0
0
Java进阶篇设计模式之三 ----- 建造者模式和原型模式

前言 在上一篇中我们学习了工厂模式,介绍了简单工厂模式、工厂方法和抽象工厂模式。本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式。 建造者模式 简介 建造者模式是属于创建型模...

虚无境
2018/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
10
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
8
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部