23种设计模式之原型模式代码实例

原型模式就是利用一个克隆”原型“来产生新对象的一种模式,

克隆又分浅克隆与深克隆,

浅克隆:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。

深克隆:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。

具体代码如下:

import java.io.Serializable;class SerializableObject implements Serializable {private static final long serialVersionUID = 1L;
}
import java.io.*;public class Prototype implements Cloneable,Serializable {private static final long serialVersionUID = 1L;private String string;private SerializableObject obj;/* 浅复制 */public Object clone() throws CloneNotSupportedException {Prototype proto = (Prototype) super.clone();return proto;}/* 深复制 */public Object deepClone() throws IOException, ClassNotFoundException {/* 写入当前对象的二进制流 */ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectOutputStream oos = new ObjectOutputStream(bos);oos.writeObject(this);/* 读出二进制流产生的新对象 */ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());ObjectInputStream ois = new ObjectInputStream(bis);return ois.readObject();}public String getString() {return string;}public void setString(String string) {this.string = string;}public SerializableObject getObj() {return obj;}public void setObj(SerializableObject obj) {this.obj = obj;}
}

 到此为止五种创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。代码实例完成。

转载于:https://www.cnblogs.com/longhaolove/p/7847164.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图论模板——费用流(无法处理负环)

费用流 https://www.acwing.com/problem/content/2176/ //最大流的最小费用 #include<bits/stdc.h> using namespace std;const int N 5010, M 100010, INF 1e8;int n,m,S,T; int ne[M],e[M],f[M],w[M],h[N],idx; int q[N],d[N],pre[N],incf[N]; bool st[N];void add…

css调用外部字体

CSS中可以使用font-face属性即可实现调用任何外部等特殊字体。 font-face属性介绍及其实例&#xff1a; 对浏览器的支持&#xff1a; Firefox、Chrome、Safari 以及 Opera 支持 .ttf (True Type Fonts) 和 .otf (OpenType Fonts) 类型的字体。 Internet Explorer 9 支持新的 fo…

python注入点查找_sqlmap常用注入点检测爆破命令

1、检测注入点是否可用python sqlmap.py -u "url"2、从目标url爆破所有数据库名python sqlmap.py -u "url" --dbs3、从目标url爆破当前数据库名python sqlmap.py -u "url" --current-dbs4、列出数据库所有用户python sqlmap.py -u "url&quo…

python如何输入空行_在python中,如何在接受用户输入时跳过空行?

您得到的行为是预期的&#xff0c;请阅读input文档。在input([prompt])If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newli…

js层级选择框样式_【JavaWeb】85:jQuery的各种选择器

今天是刘小爱自学Java的第85天。感谢你的观看&#xff0c;谢谢你。话不多说&#xff0c;开始今天的学习&#xff1a;选择器的作用是什么&#xff1f;可以快速准确地定位我们所需要的标签。刚学CSS的时候&#xff0c;觉得CSS选择器也太多了吧&#xff0c;直到今天学了jQuery选择…

python的单例模式

单例模式(Singleton Pattern)&#xff0c;是一种软件设计模式&#xff0c;是类只能实例化一个对象&#xff0c; 目的是便于外界的访问&#xff0c;节约系统资源&#xff0c;如果希望系统中 只有一个对象可以访问&#xff0c;就用单例模式&#xff0c; 显然单例模式的要点有三个…

c语言自定义输出小数点位数_C语言中输出时怎样控制小数点后的位数,请举例说明......

控制2113小数位数就是通过输出格式说明符来规定的举例5261说明如下4102&#xff1a;1、float f13.1415926;2、float f21234.1415926;3、float f3124.1;4、printf("%3.4f",f1);//输出结果为&#xff1a;_ _ 3.1416(_表示空格1653)5、printf("%3.4f",f2);//输…

语言求圆周率近似值改错_新证明解决了如何求无理数的近似值

原文&#xff1a;Kevin Hartnett&#xff0c;QuantaMagazine日前&#xff0c;一份新鲜出炉的论文证明了近80年悬而未决的达芬-谢弗&#xff08;Duffin-Schaeffer&#xff09;猜想&#xff0c;让数轴上讳莫如深的部分再也不如表面看来那么遥不可及。达芬-谢弗猜想的证明完美解答…

python在不同层级目录import模块的方法

转自&#xff1a;https://www.cnblogs.com/luoye00/p/5223543.html 使用python进行程序编写时&#xff0c;经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后&#xff0c;通过import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包…

谷歌翻译无法连接网络_window10无法连接网络

很多朋友都将电脑的系统升级到Win10&#xff0c;如果遇到了Win10系统无法连接网络该如何解决&#xff0c;下面就为大家介绍一下解决的方法。window10无法连接网络一、检查路由器1、重新启动(断电10秒钟) 无线路由器和猫(调制解调器)&#xff0c;有时候是路由器的故障&#xff1…

php: +1天, +3个月, strtotime(): +1 day, +3 month

php: 1天, 3个月, strtotime(): 1 day, 3 month 比如&#xff0c;我现在当前时间基础上1天&#xff1a; strtotime("1 day"); 比如我现在&#xff0c;2014-05-01时间上 3个月 $s strtotime("2014-05-01"); $d strtotime("3 month", $s); 转载…

获取弹出的窗口_Win7系统如何获取设置everyone权限的问题

一位win7之家系统的小伙伴&#xff0c;想要在电脑系统中获取everyone权限&#xff0c;但是不知道该怎么做&#xff0c;对于Win7电脑如何获取设置everyone权限这个问题&#xff0c;小编觉得我们可以在电脑的计算机中找到相关的磁盘&#xff0c;打开磁盘属性然后在安全选项中进行…

异步请求中jetty处理ServletRequestListener的坑

标题起得比较诡异&#xff0c;其实并不是坑&#xff0c;而是jetty似乎压根就没做对异步request的ServletRequestListener的特殊处理&#xff0c;如果文中有错误欢迎提出&#xff0c;可能自己有所疏漏了。 之前遇到了一个bug&#xff0c;在Listener中重写requestDestroyed清理资…

Maven国内镜像 Maven阿里云镜像

<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> 转载于:https://www.cnblogs.com/a2b1/p/787…

华为h22h05服务器做raid_华为V5服务器 RAID控制卡(LSI SAS3008IR)

提供高速接口和模块LSI SAS3008IR的PCIe Core提供PCIe x8接口&#xff0c;每lane速率为8Gb/s&#xff0c;可以兼容x1、x2、x4配置&#xff1b;支持PCIe 3.0规格&#xff0c;兼容PCIe 2.x和PCIe 1.x。LSI SAS3008IR的SAS模块提供SAS功能&#xff0c;并定义支持的硬盘速率。LSI S…

通过tomcat日志定位错误

1、tomcat的安装路径下tomcat home下的common文件夹下的classes文件夹中创建log4j.properties文件&#xff0c;即 apache-tomcat-5.5.20\common\classes log4j.rootLoggerinfo,Console,Rlog4j.appender.Consoleorg.apache.log4j.ConsoleAppenderlog4j.appender.Console.layouto…

css加了固定定位就不显示内容_前端开发必备,学好”定位“向菜鸟说拜拜

众所周知&#xff0c;前端CSS中&#xff0c;盒模型、浮动、定位为必须掌握的三座大山。今天就来聊聊定位的那些事。定位是什么&#xff1f;先来看看哪些场景用到定位&#xff0c;如下图所示&#xff0c;凡是有盒子压住另一个盒子的地方都可定位&#xff0c;因为用浮动做不了&am…

vscode更换主题的插件_VScode 插件开发(三)主题

咱们上回书说道&#xff0c;安装完基础环境&#xff0c;我们要来玩自己的主题了1. 创建一个主题项目$ yo code选中 New Color Theme接下来照图中所选&#xff0c;完成项目创建(简单英语不做解释)打开项目如图2. 配置文件2.1 themes这个文件夹包含主题配置文件&#xff0c;可以新…

sql之引擎介绍

数据库引擎介绍MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎&#xff0c;就必须重新编译MYSQL。在缺省情况下&#xff0c;MYSQL支持三个引擎&#xff1a;ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY&#xff08;BDB&#xff09;&#xff0…

jquery查找ul属性不是hide,jQuery的ul显示/隐藏功能

Im trying to hide my divs which will have content in them when finished. I have a jsFiddle file and some of the coding is not complete, just wrote it very fast to give you an idea.I believe that the ul is making it not be created correctly.解决方案The html…