我想我需要一些关于模型相关概念的非常好的解释。
一般来说,如 Robotlegs 这样的框架所描述的模型是扮演应用程序状态持有者还是域状态持有者的角色?我最初认为模型是完全基于域的,即UserModel、LocationModel,它们的作用与DAO 类在服务器上的作用相同。不过,我查看的源代码越多,我看到的东西就越多,例如 UserAccountModel、ShoppingCartModel 等,其中充满了与客户端应用程序状态相关的属性和方法,而不是域状态。
我看到人们不会费心将复杂的关系添加到 VO 类中,即如果一个用户有很多照片,那么显然从 UserVO 类中省略了照片集合。相反,根据使用用户 ID 的服务调用,在必要时从服务器加载一堆 PhotoVO 对象。这是某种经验法则吗?一般来说,让 VO 尽可能“裸露”吗?这不会增加必须对服务器进行的调用以获取所有数据的可能数量吗?此外,这不是一般的域模型碎片吗?(服务器上的实体 User 类将始终具有 photos 属性)
由于对服务器的调用如此之多,获取一些可能已经在客户端存储上的对象是很正常的。进行客户端缓存是否有意义,并检查要获取的对象是否已经存在,或者一般来说,再次获取它的开销将通过获取完全同步的对象的好处得到回报从服务器。否则,当发生更改时,必须注意存储在客户端缓存中的每个对象。我个人认为从服务器获取对象的开销(之前可能已经获取)并没有那么大。我会说最好有新鲜和同步的数据。