我有一个 User 类具有一些属性,例如姓名、电子邮件、位置。我还有另一个类
称为 Post ,它具有一些属性,例如 title 、content 和 poster ,它是 User 的一个实例 。
有一个 ViewController,在 View Controller 内部有一个 PostDetailView 用于显示帖子的详细信息。现在 View Controller 有一个 post 对象,我需要将一些值传递给 PostDetailView 。我有两个选择:
- 通过初始化器传递整个
post 对象,这意味着PostDetailView 有一个方法-initWithFrame:post。一旦 View 获得了帖子对象,它就可以获取帖子中的所有数据。
PostDetailView 有一些setter 方法如setTitle: 、setContent 、setPosterName 等。Initializer 只初始化框架,然后使用 setter 传递值。
选项 1 可以在 View Controller 中节省大量工作,但可能会增加耦合。选项 2 具有更好的结构(我认为),但需要在 View 和 View Controller 中进行额外的工作。因此,我的问题是哪一个在架构方面更好?
Best Answer-推荐答案 strong>
将模型对象传递给 View 确实会增加不必要的耦合。设置单个字段更好,因为绑定(bind)逻辑在 Controller 中。
第三种选择是构建一个只包含 View 所需数据的类,并将该类的一个对象传递给 View ,而不是传递整个Post :
@interface PostViewData : NSObject
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *content;
@property (nonatomic, readonly) MyUser *poster;
@end
尽管仍然需要 Controller 来容纳特定于 View 的逻辑,但 View 仍然与模型隔离,并且代码变得明确了特定于 View 的数据的内容。
关于iOS 哪个是更好的设计比较传递整个类来查看或逐个设置,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/24727739/
|