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
23种设计模式之原型模式代码实例相关推荐
- 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之原型模式
· 原型模式在王者荣耀中的应用 · 一.简述 在王者荣耀中,克隆模式算是一个人气比较高的娱乐模式了,因为该模式下双方可以各有五个一模一样的英雄,可以带给玩家不同的游戏体验,特别是有一些比较好玩的英雄, ...
- 23种设计模式之原型模式
原型模式的定义 定义: 用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象. 通俗的讲,就是不再使用new 来创建对象, 而改用 clone 方法来得到新的对象 原型模式的核心是一个 c ...
- 《23种设计模式之原型模式(2种实现)》
说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...
- 23天读懂23种设计模式:原型模式(创建型)
点击上方 蓝字 关注我们 创建型模式是用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其他关联对象的创建.组合和表示方式. 原型模式目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创 ...
- 二十三种设计模式之原型模式
今天继续探讨GOF二十三种设计模式的原型模式,原型模式也是属于创建型模式的一种 原型模式通俗的讲就是对象复制的过程,即通过一个原型对象,我可以得到一个该对象的克隆. 下面来看下原型模式的第一种写法-- ...
- 实践GoF的23种设计模式:建造者模式
本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...
- 23种设计模式——装饰者模式
文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...
- 【Go实现】实践GoF的23种设计模式:命令模式
上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
最新文章
- 热议!“建议放学时间与父母下班时间一致”,网友:陪我一起996吗?
- ECMAScript arguments 对象(摘自W3C)
- C语言,C#语言求100-999内的水仙花数源程序
- BBQ Hard dp + 组合数学 + 建模
- gnss单频软件接收机应用与编程_GNSS/GPS RTK定位 (手机,无人车定位,无人驾驶,因子图优化)...
- struts配置json需要的jar包
- DWR第五篇之文件上传
- php接收ajax的表单数据,怎样用Ajax提交表单并接收其中的json数据
- 微信android版6.3.27,微信6.3.27旧版本
- 多商户商城小程序源码有何优势?
- 先科机顶盒一直出现android,网络电视机顶盒停留在开机界面,无法开机的解决办法...
- 学python数据分析心得体会800字_一点学习大数据分析的心得体会
- 常见概率抽样方法及其适用场景总结(简单随机抽样、分层抽样、整群抽样、系统抽样)
- Biaofun讲解短视频营销对于2021年的大势所趋
- Tensorflow概念详解
- 个人如何获取美团外卖推广链接
- 3D建模要学多久才能接外包私活?
- python 认证机构_利用Python爬了SIG官网BQB认证公司清单,我有一些重大发现..
- 华为防火墙NAT策略
- 如何估算一个项目的成本:CAPEX与OPEX的区别
热门文章
- Linux Shell 中 > 和 >> 的异同点和应用场景
- mysql执行过程五步_简单五步教你搭建MySQL主从复制
- 怎么把整个网站的代码中的一个词去掉_【杭州南牛网络】网站优化的最新优化方法...
- matlab 按钮组设置,MATLAB中的单选按钮和按钮组
- Java就应该这样学pdf
- leetcode83,删除有序链表中的重复元素
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
- Android硬件抽象层(HAL)概要介绍和学习计划 1转
- win7创建虚拟无线网络
- 【C++ 学习笔记】 MFC CEdit