【发布时间】:2009-09-24 21:33:03
【问题描述】:
我知道我在代码中对此负责,但在面向对象和 MVC 的意义上,谁应该真正加载模型。我有一个模型来表示从 url 加载的 RSS 提要。该模型非常薄,控制器管理 XML 的下载和解析,然后将其传递给模型。这样做更好还是让模型自己负责初始化?
控制器中管理检索提要的代码如下所示:
// EntriesController.m
- (void)getFeedsFromWeb {
Parser *parser = [[Parser alloc] init];
[parser addListener:self];
Downloader *downloader = [[Downloader alloc] initWithParser:parser];
[downloader getFeed:@"http://www.example.com/rss"];
[parser release];
}
- (void)notify:(Feed *)aFeed {
self.feed = aFeed;
[self updateView];
}
Downloader 开始下载和累积响应数据,并将其传递给 Parser。当 Parser 完成后,它会调用 EntriesController 类中的回调方法notify:(Feed *)feed,从而更新它的模型。
我认为我并没有真正将 Controller 中的职责解耦,因此我正在考虑将所有这些职责放在模型本身中。添加方法,如
// Feed.h
- (void)initWithContentsOfURL:(NSURL *)feedURL
- (void)initWithContentsOfDatabase:(sqlite *)database
它在模型类本身中完成所有工作。 这是一种好方法吗?模型是否应该负责从各种数据源中获取数据?
【问题讨论】:
标签: iphone model-view-controller design-patterns model