OGeek|极客世界-中国程序员成长平台

标题: iOS 哪个是更好的设计比较传递整个类来查看或逐个设置 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:48
标题: iOS 哪个是更好的设计比较传递整个类来查看或逐个设置

我有一个 User 类具有一些属性,例如姓名、电子邮件、位置。我还有另一个类 称为 Post,它具有一些属性,例如 titlecontentposter,它是 User 的一个实例

有一个 ViewController,在 View Controller 内部有一个 PostDetailView 用于显示帖子的详细信息。现在 View Controller 有一个 post 对象,我需要将一些值传递给 PostDetailView。我有两个选择:

  1. 通过初始化器传递整个post对象,这意味着PostDetailView有一个方法-initWithFrame:post。一旦 View 获得了帖子对象,它就可以获取帖子中的所有数据。
  2. PostDetailView 有一些setter 方法如setTitle:setContentsetPosterName 等。Initializer 只初始化框架,然后使用 setter 传递值。

选项 1 可以在 View Controller 中节省大量工作,但可能会增加耦合。选项 2 具有更好的结构(我认为),但需要在 View 和 View Controller 中进行额外的工作。因此,我的问题是哪一个在架构方面更好?



Best Answer-推荐答案


将模型对象传递给 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4