我有一个 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 中进行额外的工作。因此,我的问题是哪一个在架构方面更好?
将模型对象传递给 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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |