代码之家  ›  专栏  ›  技术社区  ›  Mongus Pong

用MVC模式在类中混合逻辑和图形

  •  0
  • Mongus Pong  · 技术社区  · 15 年前

    我目前正在开发一个图表应用程序(对于iPhone,虽然这在很大程度上是不相关的),使用他们的MVC模式。

    应用程序的一个方面是您可以在图表上覆盖一些统计信息。我有点不确定我将如何组织这些课程。

    每项统计都有两个方面。

    1。计算。 获取数据并计算相关统计数字的函数。

    2。显示器。 然后需要在图的顶部绘制统计数据。

    显然,我希望代码尽可能接近MVC模式,但我计划开发可能数百个这样的统计数据。

    我可以创建三个类。一个用于图形,一个用于逻辑,一个用于工厂类,将两者联系在一起。这将适合模式,但就系统中类的数量和我认为不必要的额外复杂性而言,这似乎是一个巨大的额外开销。

    所以,我很想为每个统计创建一个类。但这意味着每个类都将逻辑和图形混合在一起,这是非常令人不快的。

    关于如何在不增加不成功的复杂性的情况下,以结构化的可重用的方式来布局这些问题,还有什么其他的建议吗?

    编辑

    谢谢你的回答。最有用,但提出了更多的问题!

    MVC确实非常适合应用程序的其余部分。同样,对于iPhone,我似乎被推着走这条路。这是我为这些统计数据考虑MVC的唯一原因。

    但是,对于这些统计数据,用户将不会与它们交互,它们纯粹是为了显示。统计数据直接在视图画布上绘制各种线条和符号。每一个统计数据都以自己的方式来描绘它们的信息。每个数据之间几乎没有什么可以共享的,而且每个数据只能用一种方式表示。我想不出其他有用的方法来表示这些信息。

    所以看起来MVC不适合这些模式,但是我现在不确定除了我新发明的“混合逻辑和图形”模式之外,哪种模式适合我,因为 Single Responsibility Principle (谢谢你的链接)。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Daniel Yankowsky    15 年前

    首先,用户将与统计数据交互吗?如果不是,那你就不需要MVC了。(MVC中的控制器处理用户交互)。

    您希望将类的数量保持在最低限度,这很好。让我们分别考虑计算和显示。

    您将如何显示统计数据?它们通常是文本标签,还是有其他图形元素(误差条或类似的东西)?尝试找出显示统计信息的不同方式。

    你将有多少种不同的计算方法?每个计算是直接映射到单个图形元素,还是以多种不同的方式绘制?试着找出计算与图形元素的关系。

    作为一个具体的例子,假设您已经绘制了一组数据点。您需要显示平均值、中间值和模式。您可以将其中的每一条显示为单独的水平线,以适当的Y值穿过图表。计算都是独立的,但是显示逻辑可以共享。或者,您可能希望将平均值显示为行和文本标签。这里只有一个计算,但是有两种不同的显示方法。

    MVC设计是将底层数据与其表示分离。通过这样做,您可以为许多不同的数据块重复使用表示逻辑的位。此外,您可以以多种方式显示单个数据,它们都将保持同步。

        2
  •  1
  •   Paco    15 年前

    这取决于你所说的复杂。大多数人认为方法或类负责多个复杂的事情,类或方法负责一件简单的事情。这也被称为 SRP 当您使用MVC时,视图包含显示逻辑,模型包含业务逻辑(在您的例子中是计算),控制器将它们联系在一起。您可以使用不同的方法来实现MVC。复杂的应用程序需要分离域模型并映射到视图模型,但大多数简单的应用程序可以使用一个模型。

    如果您以不同的方式定义复杂性,MVC可能不是您喜欢的,您应该尝试一种不同的方法。