1

这个问题是概念性的,围绕 OOP 中的 MVC 模式。情节如下:我们在一个富客户端应用程序中,它与 REST Web 服务一起工作。我们向服务器上的资源发出 GET 请求,服务器返回 XML 格式的响应。响应看起来像一个 RSS 提要。客户端应用程序需要将此 XML 解析并显示为可读的 mod。

我制作了一个模型对象,它基本上反映了一个服务器数据库表,我还有一个解析器和一个视图控制器(显然还有一个视图)。

这是它今天的工作原理。视图控制器告诉解析器开始解析,解析器(SAX 类型)读取 XML,并实例化模型对象并在其属性中加载详细信息。每次解析器完成一个项目时,它都会通过委托方法通知视图控制器。它将解析的项目(类型是模型对象)发送到视图控制器。视图控制器将此项目添加到集合中。

当解析器完成对 XML 的解析时,它会通知视图控制器,然后视图控制器读取集合中的每个项目并构建视图。

这是我的问题。

  1. 这是一个很好的实现吗?
  2. 我认为集合所有者应该直接是模型,所以视图控制器要求模型开始解析,解析器通知模型而不是视图控制器,最后模型将集合发送回视图控制器。这是否更好 ?
  3. 我应该合并模型和解析器吗?
4

2 回答 2

2

以下是关于您的问题的一些要点:

  1. MVC 有多种变体。对于模型或控制器是否应该通知视图状态变化或事件没有严格的规定。这一切都取决于应用程序的具体情况。
  2. Parser 和 View 之间的通信,您首先描述的方式,可能不是正确的方式。最好让视图获得一个填充的集合,而不是与解析器来回通信来构建它。这不是 View 的工作。而且,将单个功能(如构建集合)分布在多个组件中并不是一个好习惯。
  3. 是在模型中包含 Parsing,还是有一个单独的组件,一个 Parser?我建议您将模型与应用程序的其他部分隔离开来(例如视图需要显示它等)。在这种隔离中,看看解析是否自然属于模型。如果是这样,则将其包含在模型中。否则,使其成为一个单独的组件。我的猜测是它不属于模型,应该是一个单独的组件。
于 2012-01-31T16:12:14.930 回答
0

模型通常不会自行创建。控制器调用从模型返回一个或多个对象的存储库。您可以阅读有关存储库 模式的更多信息。

于 2012-01-31T16:05:59.800 回答