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

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

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

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

具体代码如下:

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种设计模式之原型模式代码实例相关推荐

  1. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之原型模式

    · 原型模式在王者荣耀中的应用 · 一.简述 在王者荣耀中,克隆模式算是一个人气比较高的娱乐模式了,因为该模式下双方可以各有五个一模一样的英雄,可以带给玩家不同的游戏体验,特别是有一些比较好玩的英雄, ...

  2. 23种设计模式之原型模式

    原型模式的定义 定义: 用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象. 通俗的讲,就是不再使用new 来创建对象, 而改用 clone 方法来得到新的对象 原型模式的核心是一个 c ...

  3. 《23种设计模式之原型模式(2种实现)》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...

  4. 23天读懂23种设计模式:原型模式(创建型)

    点击上方 蓝字 关注我们 创建型模式是用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其他关联对象的创建.组合和表示方式. 原型模式目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创 ...

  5. 二十三种设计模式之原型模式

    今天继续探讨GOF二十三种设计模式的原型模式,原型模式也是属于创建型模式的一种 原型模式通俗的讲就是对象复制的过程,即通过一个原型对象,我可以得到一个该对象的克隆. 下面来看下原型模式的第一种写法-- ...

  6. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  7. 23种设计模式——装饰者模式

    文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...

  8. 【Go实现】实践GoF的23种设计模式:命令模式

    上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...

  9. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

最新文章

  1. 热议!“建议放学时间与父母下班时间一致”,网友:陪我一起996吗?
  2. ECMAScript arguments 对象(摘自W3C)
  3. C语言,C#语言求100-999内的水仙花数源程序
  4. BBQ Hard dp + 组合数学 + 建模
  5. gnss单频软件接收机应用与编程_GNSS/GPS RTK定位 (手机,无人车定位,无人驾驶,因子图优化)...
  6. struts配置json需要的jar包
  7. DWR第五篇之文件上传
  8. php接收ajax的表单数据,怎样用Ajax提交表单并接收其中的json数据
  9. 微信android版6.3.27,微信6.3.27旧版本
  10. 多商户商城小程序源码有何优势?
  11. 先科机顶盒一直出现android,网络电视机顶盒停留在开机界面,无法开机的解决办法...
  12. 学python数据分析心得体会800字_一点学习大数据分析的心得体会
  13. 常见概率抽样方法及其适用场景总结(简单随机抽样、分层抽样、整群抽样、系统抽样)
  14. Biaofun讲解短视频营销对于2021年的大势所趋
  15. Tensorflow概念详解
  16. 个人如何获取美团外卖推广链接
  17. 3D建模要学多久才能接外包私活?
  18. python 认证机构_利用Python爬了SIG官网BQB认证公司清单,我有一些重大发现..
  19. 华为防火墙NAT策略
  20. 如何估算一个项目的成本:CAPEX与OPEX的区别

热门文章

  1. Linux Shell 中 > 和 >> 的异同点和应用场景
  2. mysql执行过程五步_简单五步教你搭建MySQL主从复制
  3. 怎么把整个网站的代码中的一个词去掉_【杭州南牛网络】网站优化的最新优化方法...
  4. matlab 按钮组设置,MATLAB中的单选按钮和按钮组
  5. Java就应该这样学pdf
  6. leetcode83,删除有序链表中的重复元素
  7. 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
  8. Android硬件抽象层(HAL)概要介绍和学习计划 1转
  9. win7创建虚拟无线网络
  10. 【C++ 学习笔记】 MFC CEdit