2011-08-05 87 views
0

示例场景:在屏幕上显示5个视图,每按一次,彩虹的颜色就会增加一种颜色。模型视图控制器(MVC)设计模式 - 如何将多个视图链接到多个模型?

为了与MVC设计保持一致,它似乎鼓励让一个模型是一个整数或某物的数组,并且每次按下一个视图时,它都会告诉控制器“嘿,我被按下,只是fyi”和然后让控制器说“好的,我会在阵列中增加一个相应的位置”,然后让模型说“我改变了,无论谁在乎”,然后让视图说“我在乎,所以我会改变我的现在颜色“。

^这对我来说似乎绝对荒谬。我想我必须有MVC应该完全倾斜的方式,因为将数据存储在按钮本身似乎更有意义。当然,也许按钮的功能会改变或被重用,所以在按钮按下它的代表(控制器)时留下该做什么,但这似乎有点多。

此外,它是否建议存储与视图的ID?代表们怎么知道哪一个被按下?那么相应的ID应该与模型一起保存?这开始让我想起像意大利面一样的mysql表格...

反正,只是想确保我有那个正确的。

PS-据我所知,没有其他世俗的力量,在那里,我的任务使用MVC绝对完美的每一次,但仍想知道什么是在这种情况下:)

回答

2

认为适当的在极限情况投资程序结构可能看起来有点过度。我们会将设计模式应用于“Hello World”程序吗?我们是否需要添加评论?没有“最佳实践”,只有“在这种情况下适当的做法”。

你的设置是一个简单的模型和平凡关系的简约系统 - 因此MVC可能是矫枉过正。该应用的特殊功能:

  1. 没有有趣的模型。增加一个值对任何其他值都没有影响。
  2. 有没有有趣的控制要求。按下一个按钮不会导致除立即按钮之外的任何状态改变。
  3. 这听起来像是一个丢弃程序,没有未来的维护要求。

现在让我们考虑一下应用程序可能发生的变化:它是持久的。当你明天运行它时,它会从数据库中恢复状态,每次你点击一个按钮来保存状态。

您将如何在最低限度的解决方案中实现?现在有一个知道如何坚持自己的共同模式开始具有价值。我声称MVC结构完全避免了这变成意大利面条。它强加结构,而这个结构是一个维护者会认可的广泛使用的结构。

我可能对你的问题读得太多了,但是听起来有点像你觉得在现有的MVC应用程序中导航很麻烦。这种反应与我曾经看过有人习惯编写小程序时遇到的结果类似,可能会遇到结构化或OO计划:他们感到沮丧,因为没有单一的流程可以遵循,你不能轻易看到整体结构。我们需要学习的一件事就是能够采用黑盒方法进行编码。专注于一个(例如控制器)并暂时将模型和视图视为Black_Box。当我从一个大型系统的某个方面转向另一个方面时,我发现自己几乎是“换挡”。

+0

这个问题是一个想法更加完全理解的想法的简化例子,所以我可以快速描述我遇到问题的地方。 我遇到的真正麻烦是它的“多重”方面。最终结果,我想要一个非常强大的按钮式的东西。我的困惑在于它是否应该存储一个ID类型的东西,所以当屏幕上有多个控制器可以告诉哪一个被按下时。但是如果是这种情况,并且有一个与它关联的ID将其链接到具有相同ID的数据集,为什么不将这些数据存储在类似按钮的按钮中呢? – Phildo

+0

再一次,在每个按钮完全独立的极限情况下,数据很简单(ID 1,数据“红色”; ID 2,数据“蓝色”......),那么一个简单的独立按钮就可以清楚地起作用。它不会在设置上给MVC带来很多改变,例如,假设我们想支持多种语言,现在最好有1个按钮,而不是红色/红色/ ...按钮。 – djna

相关问题