2009-12-21 19 views
0

我目前正在使用他们的MVC模式开发图表应用程序(对于iPhone,尽管这在很大程度上是不相关的)。在MVC模式类中混合逻辑和图形

该应用程序的一个方面是,您可以覆盖图表上的许多统计数据。我有点不确定我将如何构建这些类。

对于每个统计数据将会有两个方面。

1.计算。将取得数据并计算相关统计数字的函数。

2.显示器。然后需要在图的顶部绘制统计数据。很显然,我希望代码尽可能符合MVC模式,但我计划开发可能的数百个这样的统计数据。

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

所以,我非常想为每个统计创建一个类。但这意味着每个班级都会将逻辑和图形混合在一起,这是令人f目结舌的。

有没有其他的建议,我可以如何在不增加复杂性的情况下以结构化的可重用方式进行布局?

编辑

感谢您的答案。最有用的,但提出了更多的问题!

MVC完全适合应用的其余部分。对于iPhone来说,我似乎仍然沿着这条道路前进。这是我为这些统计数据考虑MVC的唯一原因。

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

因此,似乎MVC是这些,但我不确定什么模式会适合除了我刚发明的“混合逻辑和图形”模式,只是由于Single Responsibility Principle(感谢那个链接)感觉错误。

回答

1

首先,用户是否会与统计数据交互?如果不是,那么你不需要MVC。 (MVC中的Controller处理用户交互)。

你想保持最少的类数,这是很好的。让我们分别考虑计算和显示。

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

你会有多少种不同的计算?每个计算是否直接映射到单个图元素,还是可能以多种不同方式绘制?试图弄清楚计算如何与图表元素相关。

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

MVC设计是关于将基础数据与其表示分离。通过这样做,您可以重复使用多个表示逻辑来处理许多不同的数据。此外,您可以以多种方式显示单个数据,并且它们都将保持同步。

1

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

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