Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过克隆接口或复制构造器克隆对象与在原型模式中创建新对象的性能

通过克隆接口或复制构造器克隆对象与在原型模式中创建新对象的性能
EN

Stack Overflow用户
提问于 2019-10-03 23:20:43
回答 3查看 463关注 0票数 1

最近,在学习设计模式时,我了解到,在需要大量创建对象的场景中,原型模式非常有用,而且性能非常高效。

Prototype模式还通过在原型模式中使用可复制的接口或复制构造函数来最小化太多对象创建的开销。

但是,我想知道如何克隆或复制对象比创建一个新对象更有效。JVM级别的解释将是很棒的。

这是使用原型图案的唯一原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-03 23:27:52

原型模式不用于性能(尽管根据Ioannis的链接,它已被用作性能攻击)。这样您就可以从一个(可能正在改变的)原型中创建新的对象。

一些“克隆”的方法是必要的,所以你不必关心原型的状态。您只需调用prototype.someMethodThatReturnsACopy(),对象就可以使用了。您可以使用clone()或其他方法创建该副本,如果您真的需要的话,甚至可以手动构建一个副本。

票数 2
EN

Stack Overflow用户

发布于 2019-10-03 23:28:09

有趣的是,您最近了解到原型模式是性能良好的,因为该设计模式已经过时。您可以检查这个stackoverflow question,它已经有将近10年的历史了

票数 2
EN

Stack Overflow用户

发布于 2019-10-05 12:35:40

前面的答案是正确的,因为原型模式在Java中不是一个有用的性能工具。

GoF的书在第121页上写道,

原型在静态语言(如C++ )中特别有用,其中类不是对象,在运行时很少或根本没有类型信息可用。在Smalltalk或object等语言中,为创建每个类的实例提供相当于一个原型(即类对象)的内容并不那么重要。这种模式被构建在基于原型的语言中,比如Self,在这种语言中,所有的对象创建都是通过克隆一个原型来实现的。

一种更现代的原型语言是JavaScript。在prototype based vs. class based inheritance中讨论了一些利弊。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58231681

复制
相关文章
Django 自定义管理命令
Django 提供了一组非常实用的命令, 可以通过django-admin.py和pytohn manage.py脚本调用. 关于这个Management Command的一个优点是你可以创建自定义的command来扩展它.当你需要通过终端命令来对程序进行操作的时候, 通过这个管理命令就非常方便了。 在本篇中, 你将学习到如何编写自己的命令并通过manage.py 来调用.
用户1416054
2018/12/19
1.3K0
Django 自定义管理命令
Django中ORM操作
Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可;
緣來
2020/01/02
4.8K0
Django后台管理之Admin actions自定义
通常情况下,admin的工作模式是“选中目标,然后修改目标”,但在同时修改大量目标的时候,这种模式就变得重复、繁琐。
菲宇
2019/08/14
2.2K0
Django中数据库的相关操作
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。
小闫同学啊
2019/07/18
2.3K0
Django中数据库的相关操作
Django图书管理系统(单表操作)
Python3 以及前端:HTML,CSS,jQuery,BootStrap,Django,JavaScript
py3study
2020/02/10
6250
Django中的cookie与session操作实例代码
users = UserInfo.objects.filter(username=username,password=password)
用户8826052
2021/07/13
2860
ubuntu中的django安装配置与操作
1 安装django,在安装前确保python已经安装,ubuntu中默认有安装的。我们只需要安装django即可,解压django压缩文件,进入解压后的文件夹,运行,python setup.py install即可安装django到python中。 2 创建django项目,首先在任意位置创建文件夹,这里是在python用户下创建work文件夹,接着进入work运行一下命令即可创建django工程。 root@ubuntu118:/home/python/work# django-admin.py st
闵开慧
2018/03/30
1K0
Django的新增接口集管理数据库操作(十一)
从上文的ajax请求可以看出:我们点击添加之后会调用POST,来将数据以json的格式传输给/callections/
zx钟
2019/07/19
5470
【Django】 开发:数据库操作和后台管理
与 all () 方法不同,它会用 SQL 语句的 ORDER BY 子句对查询结果进行根据某个字段选择性的进行排序
杨丝儿
2022/02/24
4.1K0
Django(33)Django操作cookie
cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。
全栈程序员站长
2022/09/19
9460
Django(33)Django操作cookie
Angular 中自定义 Video 操作
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天。 上一篇文章是 Angular 项目实现权限控制。最近自己在网上看到别人使用 vue 进行自定义 video 的操纵。加上不久前实现了 angular 自定义 video 的相关需求, 遂来记录一下,作为交流思考🤔 实现的功能如下: 播放 / 停止 快退 / 快进 / 倍速 声音开 / 声音关 进入全屏 / 退出全屏 进入画中画 / 退出画中画 【安卓平板不支持,不建议使用】 经过时长 / 总时长 播放进度条功能:支持点击,拖拽进度
Jimmy_is_jimmy
2022/04/15
1.8K0
Angular 中自定义 Video 操作
自定义方便kubectl中pods的管理
我猜很多接触 K8S 的同学应该都是运维的同学为主,一般上来说,运维的同学写 Shell 显然是比 Java 程序员专业的,但是当大数据遇到 K8S 的时候,搞大数据的同学还在每条 kubectl 去操作实在是太浪费时间了。 在我学习的过程中,我会创建很多临时的 Pods,测试完其实这些 Pods 就没用了,或者说 Status 是 Error 或者 Complete 的 Pods 已经不是我学习的对象,想删掉,所以 kubectl get pods 的时候想显示少一点。 简单的办法就是用 Alias 来封装一下各种状态的显示。
runzhliu
2020/08/06
6880
django 1.8 官方文档翻译:7-2 管理操作
简而言之,Django管理后台的基本流程是,“选择一个对象并改变它”。在大多数情况下,这是非常适合的。然而当你一次性要对多个对象做相同的改变,这个流程是非常的单调乏味的。
ApacheCN_飞龙
2022/11/27
7370
django 1.8 官方文档翻译:7-2 管理操作
Django中六个常用的自定义装饰器
装饰器作用 decorator是当今最流行的设计模式之一,很多使用它的人并不知道它是一种设计模式。这种模式有什么特别之处? 有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为,
jhao104
2018/07/04
1.3K0
Django 模型中自定义Manager和模型方法
在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个manager,你可以创建自定义manager以定制数据库的访问. 这里有两个方法创建自定义manager:添加额外的manager;修改manager返回的初始Queryset.
菲宇
2019/06/13
2.8K0
django(一)基本的操作
django 版本2.0.5 新建一个app 创建django app 我们先来了解一下一些必要的概念。Django 里什么东西叫 APP 呢?
学到老
2019/01/25
3780
django(一)基本的操作
点击加载更多

相似问题

Django -自定义管理操作

10

Django -自定义管理操作

12

添加自定义Django管理操作

11

FeinCMS操作列的Django自定义管理操作

13

在django中测试自定义管理操作

43
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文