prototype原型模式
/**
* 原型模式 Prototype
* 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
*/ 需求:
public class Resume {
/**
* 要求:一个简历类,必须有姓名,可以设置性别和年龄,可以设置工作经历,最终需要三份简历
*/
String name;
int age;
String gender;
String timeArea;
String company;
public Resume(String name) {
this.name = name;
}
public void setPersonInfo(String gender, int age){
this.gender = gender;
this.age = age;
}
public void setWorkExperience(String timeArea, String company){
this.timeArea = timeArea;
this.company = company;
}
public void display(){
System.out.println(name + gender + age);
System.out.println("工作经历: " + timeArea +" " + company);
}
public static void main1(String[] args){
Resume a = new Resume("大鸟");
a.setPersonInfo("男", 21);
a.setWorkExperience("上海", "xxx公司");
Resume b = new Resume("大鸟");
b.setPersonInfo("男", 21);
b.setWorkExperience("上海", "xxx公司");
Resume c = new Resume("大鸟");
c.setPersonInfo("男", 21);
c.setWorkExperience("上海", "xxx公司");
a.display();
b.display();
c.display();
}
改进:
public void copySome(String[] args){
Resume a = new Resume("大鸟");
a.setPersonInfo("男", 21);
a.setWorkExperience("上海", "xxx公司");
Resume b = a;
Resume c = a;
a.display();
b.display();
c.display();
}
引出原型模式。

深拷贝与浅拷贝:
区别在于浅拷贝对于引用数据类型只是引用的传递,可能导致克隆体和本体共用一个引用变量,造成互相影响。深拷贝需要重写clone,进行引用对象的值传递。
prototype原型模式的更多相关文章
- Prototype原型模式(创建型模式)
1.原型模式解决的问题 现在有一个抽象的游戏设施建造系统,负责构建一个现代风格和古典风格的房屋和道路. 前提:抽象变化较慢,实现变化较快(不稳定) 整个抽象的游戏设施建造系统相对变化较慢,本例中只有一 ...
- 设计模式05: Prototype 原型模式(创建型模式)
Prototype 原型模式(创建型模式) 依赖关系的倒置抽象不应该依赖于实现细节,细节应该依赖于抽象.对所有的设计模式都是这样的. -抽象A直接依赖于实现细节b -抽象A依赖于抽象B,实现细节b依赖 ...
- 一天一个设计模式——Prototype 原型模式
一.模式说明 看了比较多的资料,对原型模式写的比较复杂,个人的理解就是模型复制,根据现有的类来直接创建新的类,而不是调用类的构造函数. 那为什么不直接调用new方法来创建类的实例呢,主要一个原因是如果 ...
- 7、Prototype 原型模式 通过复制创造实例 创造型模式
2020-07-19 发哥讲 发哥讲 其实上一节的末尾讲到如何去生成对象,其中有一个关于clone的,这其实就是Prototype原型模式. 通过克隆(拷贝)的方式生成对象 1.了解Prototype ...
- C++设计模式-Prototype原型模式
作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C+ ...
- prototype原型模式中的问题
对于每个构造函数来说,都有一个prototype属性.对于每个对象实例来说,都有_proto_属性. 参看下面代码: function Person(){} Person.prototype={ na ...
- Prototype 原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式即在运行时动态的通过一个对象的实例来创建这个类的对象,可以理解成通过一个实例克隆出另一个实例. Prototype模式的一些优 ...
- 设计模式(五):PROTOTYPE原型模式 -- 创建型模式
1.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2.适用场景 原型模式的主要思想是基于现有的对象克隆一个新的对象出来,一般是有对象的内部提供克隆的方法,通过该方法返回一个对 ...
- 设计模式:Prototype 原型模式 - 同学你抄过别人的作业么?-clone()方法的使用
原型模式: 通过某个类的实例来创建对象 使用原型模式的好处: 好处是什么呢?当我们需要多次重复的创建一个类的示例的时候,我们可以使用new但是,new不仅仅耗费内存而且,如果new 某个类的构造方法中 ...
- 设计模式(1)--Prototype(原型模式)--创建型
1.模式定义: 原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象. 2.使用场景: 在原型模式中我们可以利用过一个原型对象来指明我们所要创建对象的类型,然后通过复制这个对象的 ...
随机推荐
- 【Maven学习】Nexus私服代理其他第三方的Maven仓库
一.背景 [Maven学习]Nexus OSS私服仓库的安装和配置 http://blog.csdn.net/ouyang_peng/article/details/78793038 [Maven学习 ...
- cocos代码研究(9)ProgressTimer类学习笔记
理论部分 ProgressTimer是Node的子类. 该类根据百分比来渲染显示内部的Sprite对象. 变化方向包括径向,水平或者垂直方向. 代码部分 Type getType () const获取 ...
- 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)
Problem A. Mischievous Problem Setter 签到. #include <bits/stdc++.h> using namespace std; #defin ...
- hdu 5017
好恶心的题 #include <cstdio> #include <string.h> #include <algorithm> #include <cmat ...
- echarts页面中多图自适应
$(function (){ //ups部分 var myChart = echarts.init(document.getElementById('result')) var option = { ...
- springcloud13---zuul
Zuul:API GATEWAY (服务网关): http://blog.daocloud.io/microservices-2/ 一个客户端不同的功能请求不同的微服务,那么客户端要知道所有微服务的 ...
- 抓包工具Charles简单使用介绍
一是拦截别人软件的发送的请求和后端接口,练习开发. 二是自己后端返回的response拦截修改后再接收以达到测试临界数据的作用. 三写脚本重复拦截抓取别人的数据. 四支持流量控制,可以模拟慢速网络以及 ...
- [3140] Sublime Text 2.x, 3.x 通用注册码、密钥集合
[3140] Sublime Text 2.x, 3.x Universal License Keys collection for Win, Mac & Lin 所有这些许可证密钥都被测试( ...
- Spring JPA中OneToOne和OneToMany用法
Spring工程中,创建实体对象时,可以通过JPA的@Entity标识实体与数据库表的对应关系,@Column标识数据库字段.其中还有标识两个实体间关系的注解:@OneToOne.@OneToMany ...
- UVa 12169 不爽的裁判
https://vjudge.net/problem/UVA-12169 题意: 输入T,x1,x2,x3,...,x2T-1,输出x2,x4,...,x2T. 递推公式为xi=(axi-1+b)mo ...