假设我有一个ChatDataProvider类,它与服务器通信并包含Chat类型的对象列表(包含Post等类型的对象)。如果我想将这个聊天转移到另一个类(为了显示它们),我有几种可能性:
我想1.& 2.因为数据没有被封装,所以会被认为是糟糕的设计。但它也有以下好处:
数据一致性(例如,如果条目的顺序发生变化,我需要将此更改传播到深层复制版本并在那里应用相同的顺序,或者我需要获取该列表的新深层副本)
减少内存使用量
在整个应用程序中保持数据一致会产生很大的实现开销,容易出错。由于这是一个封闭的应用程序,没有"未经授权的"将发生不应传播(自动)的数据更改。
那么您会选择哪一个?为什么?两种选择都有效吗?
这个问题可能有答案,但我真的不知道要搜索什么。所以如果有人知道一些链接/资源,那很好。
答案 0 :(得分:1)
这一切都缩小到您使用的项目的设计。
1)如果您的应用程序需要在许多其他包中使用该对象,请使用浅拷贝克隆而不是深拷贝方法来复制。 由于维护相同的数据,重新创建在一个对象中执行的操作,因此将耗费您的性能,内存并且还会产生繁琐的效果。我会避免它。
2)如果你同时对同一个对象进行操作,它很容易出错,也不是一个好的设计。
因此,如果您只是要访问该对象,则进行浅层复制/引用;如果您同时执行任何操作,则进行Deep copy !!!