代码之家  ›  专栏  ›  技术社区  ›  Dori

MVC最佳实践问题

  •  1
  • Dori  · 技术社区  · 16 年前

    我有一个关于MVC设计的问题,基于斯坦福的iPhone讲座。

    我有三节课;

    多边形-它保存诸如边数等信息。这是我的模型课

    控制器-这会对视图中的按钮按下做出响应,然后调用模型中的方法来增加和减少边数等。这是我的控制器(惊喜!)

    1) 将Polygon类的实例传递给视图,使视图具有指向它的指针。然后我可以随时调用refresh,视图就会知道该怎么做。这是我通常会做的,但似乎打破了MVC方法,因为视图和模型似乎绕过了控制器,这使我认为这可能不是最好的方法。

    2) 在视图中有一个redraw(…)方法,它将接收到的任何新信息作为其参数。这看起来很干净,但我想不会很好地扩展。

    任何建议都很好。就像我通常说的,我会做第一个选择,但是我希望有人能告诉我一些事情来改进我的思考方式。。。。

    谢谢!

    3 回复  |  直到 16 年前
        1
  •  2
  •   zoul    14 年前

    最重要的是 联轴器 . 如果它太紧,设计将受到影响,你将重复自己和代码将难以维护。如果过于宽松,简单的事情就很难处理。如果你想画一个简单的多边形基于某个模型,你应该有一个模型在手,因为这将是疯狂的拉所有的顶点通过一个控制器。毕竟,视图是专门用来显示一个多边形的,所以有一个指向它的表示的指针是非常自然的。

    不 关心的是语境,是展示对象的生活故事。它可能来自网络,可能很快就会改变,当你点击它时,它可能会变大一倍。风景不在乎。如果单击它,视图可以将事件报告回控制器,并且不再关心它。如果对象发生更改,控制器将通知视图进行更新。

        2
  •  0
  •   Oren Mazor    16 年前

    你的视图应该只是显示视图。因此,如果您需要在视图中显示更新的信息,您可以从缓存中执行该操作(这在这里并不适用,但我会将其抛出,因为这是我最近在web stuff中经常执行的操作),或者重新启动控制器,让控制器使用有关模型的更新数据再次调用视图。

    所以从技术上来说,你的第二个选择是更正确的。视图应该通过调用控制器并请求其更新信息来重新绘制自身。

        3
  •  0
  •   balupton    16 年前

    因此,模型应该像一个数据员。控制员应该像办公室的管理员或组长。这种观点应该像一个新闻记者在读一个电视提示读者。

    控制器可以控制所有人,控制输入的数据和提词器上的文本,并将实际工作外包给模型(用于数据)和视图(用于显示)。

    因此,回答你的问题。风景应该就这样 echo $this->view->myPentagon->someAttribute . 控制器从模型中获取myPentagon对象,并将其分配给view对象。模型处理数据结构和数据库api。视图处理显示。控制器告诉视图何时显示。

    推荐文章