有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在整个应用程序中使用相同的数据还是复制它?

假设我有一个与服务器通信的ChatDataProvider类,它包含Chat类型的对象列表(包含Post等类型的对象)。如果我想将这些聊天转移到另一个类(以便显示它们),我有几种可能性:

  1. 发送对列表对象的引用
  2. “浅”复制数据:创建一个新列表,其中包含对原始对象的引用
  3. 深度复制数据

我猜是1&;2.由于数据未封装,将被视为不良设计。但它也有以下好处:

  • 数据一致性(例如,如果条目的顺序发生变化,我要么需要将这些变化传播到深度复制版本,并在那里应用相同的顺序,要么需要获取该列表的新深度副本)

  • 减少内存使用

在整个应用程序中保持数据的一致性会产生巨大的实现开销,而且容易出错。由于这是一个封闭的应用程序,因此不会发生不应(自动)传播的“未经授权”的数据更改

那么你会选择哪一个?为什么?这两种观点都有效吗

这个问题可能有答案,但我真的不知道该搜索什么。所以,如果有人知道一些链接/资源,那没关系


共 (1) 个答案

  1. # 1 楼答案

    这一切都缩小到你使用的项目的设计

    1)如果应用程序需要在许多其他软件包中使用该对象,请使用浅拷贝进行克隆,而不是使用深拷贝方法进行复制。 与通过在一个对象中重新创建操作来维护相同的数据一样,通过out将消耗您的性能、内存,而且是一种乏味的效果。我会避免的

    2)如果同时在同一个对象上执行操作,则很容易出错,这也不是一个好的设计

    因此,如果您只需要访问对象,请选择浅拷贝/引用;如果您同时执行任何操作,请选择深拷贝