传递整个模型还是仅传递标识符更好?

问题描述 投票:0回答:2

我经常发现自己将(数据)模型传递到我需要的地方,作为方法参数沿层次结构向下传递,作为事件参数沿层次结构向上传递。

一个说明性的例子是我从磁盘加载一堆数据项来设置一堆(鼠标)可拖动的项目。现在,堆栈保存了一组数据模型。如果用户单击并拖动堆栈中的项目,则会设置一个可视拖动对象并给出相应的模型。当项目被放下时,拖动对象会发送一个事件,其中包含其被放下的位置和所述模型作为参数,然后将其传递给接收者(如果该位置有任何接收者)。等等...

我总是想知道这是否是一种干净而有效的方法来传递整个模型,或者我是否应该只传递一个标识符(如 Guid)并让真正需要数据的对象/类在其中查找它某种形式的全球可访问数据库。

这有什么最佳实践或模式吗?

(对我来说,背景是用 C#、Unity 和 Godot 进行游戏开发)

c# unity-game-engine model godot
2个回答
1
投票

答案是:视情况而定。

这取决于多种因素,例如对象的大小、访问次数以及逻辑的复杂性。

简单地说,如果您有经常读取或写入的小对象,那么将它们作为整个对象传递肯定是值得的。 另一方面,如果您有非常大的对象并且读取是零星的,那么此时最好使用标识符类型并根据需要读取它以避免多次数据库访问。

当然,在任何情况下引用逻辑都有助于在两者之间取得良好的折衷。

我希望它可以帮助您选择最佳的方法。


0
投票

不要传递任何大的东西,将其集中。 Unity 有一个内置的系统,用于独立于脚本的数据存储,称为“可编写脚本的对象”,非常值得研究。创造性地使用它们还可以促进活动和其他班级共享功能(另请参阅 Unite 会议,奥斯汀 2017 关于该主题的关键演讲)。

© www.soinside.com 2019 - 2024. All rights reserved.