【问题标题】:How to share an object between two Models in MVC?如何在 MVC 中的两个模型之间共享一个对象?
【发布时间】:2019-05-04 23:04:16
【问题描述】:

我的纸牌游戏中有两个模型。

  1. HandModel - 包含 CardModel 实例的列表。
  2. BoardModel - 包含放置在具有特定坐标的板上的 CardModel 实例。

我想从 HandModel 列表中弹出一个卡片实例并将其放置在 BoardModel 坐标中。我想在这两个模型之间发送一张卡片,但我不想因为这个原因直接在 HandModel 中调用 BoardModel。不知道该怎么做。

【问题讨论】:

  • 在 MVC 的控制器部分,您可能会从 HandModel 获取 CardModel 并将其传递给 BoardModel

标签: javascript java c# model-view-controller model


【解决方案1】:

您可能希望以卡片模型本身具有某种位置的方式设计模型,该位置可由处理卡片的控制器更新。这样一来,任何模型都不必知道任何其他模型。

【讨论】:

  • 感谢您的回答。绝对给了我一些想法。唯一的问题是我仍然需要 BoardModel 来了解这些卡片实例。它必须根据他们的坐标来操作他们的数据。
  • 我的意思是我可以将所有模型组合在一个控制器中。我想到的另一种选择是将通知从一个模型发送到另一个模型,然后控制器将不必采取如此多的依赖关系。我也可以将 HandModel 与 BoardModel 组合成一个大模型。仍然不确定我应该采取哪种方法。
  • 板卡模型只需要知道卡片实例的ID...您不需要保存模型的整个实例。控制器知道所有实例,而模型本身只知道某种关系。这种关系可能类似于 BoardModel.contains(CardID1, CardID2...)。然后控制器将 ID 解析为一个实例并可以使用它。控制器还必须更新这些关系。
  • 另一种选择是为该关系引入一个自己的模型:Location('CardID1', 'Board1'), Location('CardID2', 'Hand1')。在这种情况下,控制器必须更新 Location 模型
  • 谢谢马库斯。我使用了您的建议并创建了一个单独的类来存储位置和实例。我的解决方案似乎足够灵活。谢谢。
猜你喜欢
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多