递归模型设计

时间:2014-11-13 14:40:28

标签: mvvm model mvp

我正在使用的软件使用的API大致有这个组织:(你可能需要阅读它两次才能解析符号:))

  • 场景是一个包含一组间隔(持续时间)和事件(时间点)的过程。
  • 间隔由其开始和结束事件定义,它指定开始和结束的时间(因此它的持续时间)。间隔可以包含任意数量的进程(如方案)。
  • 事件只是一个时间点。

可以在图形视图上放置事件以创建场景。

正如您所看到的,此模型是递归的,因为您可以在一个区间中放置一个场景,并且在此场景中的另一个区间 ad infinitum

我的问题是:在"视图模型" - "演示者" - "查看"模式,API对象和视图模型对象的所有权关系应该是什么?我应该让API管理自己的模型对象的所有权,例如Event& Interval,还是我在实例化相应的视图模型对象时应该实例化它们?有最好的做法吗?

1 个答案:

答案 0 :(得分:1)

您应该让API管理自己的域对象,并在项目中将这些对象映射到自定义Model或ViewModel对象

每当使用ViewModel时,请尝试记住MVVM或MVP是UI的模式,而不是业务逻辑模式。演示者应该调用其他类(应该被视为MVVM / MVP / MVPVM模式之外)来执行其业务逻辑。听起来你提到的API提供了很多你的业务功能;理想情况下,您的模型将特定于您的应用,然后您可以将API的对象适当地映射到模型对象。

使用域对象(例如API提供的对象)作为您的模型是很常见的,有时也是错误的,所以要小心,因为您需要模型上的属性或属性的时刻不是由API对象提供,你会感到困惑和困惑。非常愿意将API对象映射到仅适用于您的应用或网站的自定义模型对象。

如有疑问,请回到SOLID,尤其是单一责任原则。

希望我理解你。