码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 设计模式与应用:原型模式


    文章目录

    • 介绍
    • 应用场景
    • 结构图
    • 代码实现

    介绍

    Prototype模式 原型模式

    创建型模式之一

    采取复制原型对象的方法来创建对象的实例

    使用Prototype模式创建的实例,具有与原型一样的数据

    特点

    • 由原型对象自身创建目标对象,也就是说,对象创建这一动作发自原型对象本身
    • 目标对象是原型对象的一个克隆。也就是说通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值
    • 根据对象克隆深度层次不同,有浅度克隆和深度克隆
      • 浅度克隆:对于引用属性,只克隆地址
      • 深度克隆:对于引用属性,其引用对象也会被克隆一份

    应用场景

    • 在创建对象的时候,我们不知希望被创建的对象继承类的基本结构,还希望继承原型对象的数据
    • 希望对目标对象的修改不影响既有的原型对象(深度克隆时课完全互不影响)
    • 隐藏克隆操作的细节。

    结构图

    根据介绍可知,原型模式的实现就是在原型类里实现一个clone()方法,当然Java类都继承了Object,都自动有Object的clone()方法,这是一个浅拷贝的方法。

    如果需要深度拷贝,可以自行重写clone方法,或者使用其他工具类

    代码实现

    看Object或具体拷贝方法即可

    • 最简单的实现就是属性值一一复制赋值到新对象里
    • 浅拷贝就引用只赋值引用地址(浅拷贝时一定要注意引用类型的问题,否则会给其他关联使用目标对象的代码带来你意想不到的错误)
    • 深拷贝就是引用属性也new个新的,再把引用属性内部的字段值进行拷贝
    • 深度拷贝比浅拷贝更耗时和耗空间
  • 相关阅读:
    快速申请注册微信小程序的方法
    JAVA设计模式-代理模式
    Web3时代到来:非洲兄弟已经在用它“养家糊口”
    Python实现print输出至日志文件
    CKA 真题练习(十六)备份还原etcd
    Spring/SpringBoot自定义线程池
    Python编程基础(华为在线课程)
    信息系统项目管理师必背核心考点(七十四)软件生存周期模型
    Go | 闭包的使用
    分库分表知识内容
  • 原文地址:https://blog.csdn.net/maoyuanming0806/article/details/125525497
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号