NSDocument子类是否属于模型对象?其包含的数据才是模型吗?
NSDocument架构定位答疑 首先给出明确结论:NSDocument本身不属于纯模型层对象,其内部承载的业务数据才是模型。
具体说明如下:
NSDocument是苹果设计的文档层协调对象,本身封装了大量非模型逻辑:包括磁盘文件读写、文档生命周期管理、关联窗口控制器、绑定系统撤销栈、响应系统级保存/重命名/复制等操作,不属于仅承载业务数据的纯模型范畴。- 你可以把
NSDocument理解为模型层的上层容器:它的核心作用之一是持有你的业务模型实例,同时完成业务模型和macOS文档系统之间的桥接工作,比如将磁盘文件反序列化为你的业务模型、将模型变更序列化后写入磁盘。 - 开发最佳实践:不要将业务数据字段直接定义在
NSDocument的子类中,建议单独抽离纯数据结构(如无副作用的struct、纯数据类)作为你的业务模型,仅在NSDocument子类中持有该模型实例,专门处理和系统文档能力相关的桥接逻辑,这种拆分方式可以保证业务模型的通用性,后续做架构调整或者多平台迁移时不需要修改纯业务模型代码。
内容的提问来源于stack exchange,提问作者ATL_DEV
相关产品推荐
相关产品推荐

