亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

克?。ㄍㄟ^ Cloneable 接口或復制構造函數)對象與在原型模式中創建新對象的性能

克?。ㄍㄟ^ Cloneable 接口或復制構造函數)對象與在原型模式中創建新對象的性能

慕尼黑5688855 2023-09-20 19:10:36
最近,在學習設計模式時,我了解到原型模式在需要創建大量對象的場景中非常有用且性能高效。原型模式還通過使用原型模式中的 Cloneable 接口或復制構造函數,最大限度地減少創建過多對象的開銷。但是,我想知道克隆或復制對象如何比創建新對象更有效。如果有 JVM 級別的解釋就太好了。這是使用原型模式的唯一原因嗎?
查看完整描述

2 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

原型模式不用于性能(盡管根據 Ioannis 的鏈接,它已被用作性能黑客)。使用它可以從(可能會改變的)原型創建新對象。

需要某種“克隆”方法,這樣您就不必關心原型的狀態。您只需調用prototype.someMethodThatReturnsACopy()該對象就可以使用了。您可以使用clone()或其他某種方式來創建該副本,如果您確實需要,甚至可以手動構建一個副本。


查看完整回答
反對 回復 2023-09-20
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

前面的答案是正確的,因為原型模式在 Java 中并不是一個有用的性能工具。

GoF 書第 121 頁指出,

原型對于 C++ 等靜態語言特別有用,其中類不是對象,并且在運行時很少或沒有類型信息可用。在像 Smalltalk 或 Objective C 這樣的語言中,它不太重要,因為它們提供了相當于原型(即類對象)來創建每個類的實例。這種模式內置于基于原型的語言(例如 Self)中,其中所有對象創建都是通過克隆原型來進行的。

JavaScript 是一種更現代的基于原型的語言?;谠偷睦^承與基于類的繼承討論了一些優缺點。


查看完整回答
反對 回復 2023-09-20
  • 2 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號