【问题标题】:Avoiding global dependency on Core Data (or similar persistence frameworks)避免对 Core Data(或类似的持久性框架)的全局依赖
【发布时间】:2019-08-29 16:34:04
【问题描述】:

像 Core Data 这样的数据持久性框架可以通过减少支持数据存储所需的代码量来大大加快应用程序的开发速度。

然而,采用这样一个框架的一个主要缺点是引入了不可避免地通过代码库成为全局和跨领域依赖的东西。

对此类框架的依赖有多种形式,包括但不限于:

  1. 引用或继承关键 API 类 - 因此对于 Core Data,这将是 NSManagedObjectContextNSManagedObject 等。

  2. 行为依赖 - 框架提供了一些不太明显的隐式功能,应用程序在某种程度上依赖于这些功能从根本上工作。对于 Core Data,这可能是反向关系的自动管理。

  3. 功能依赖性 - 框架提供其他选项所缺乏的功能。对于 Core Data,这可能是多级撤消。

有了这个想法,我的问题是:

  1. 在处理未开发代码时,最好使用哪些策略来避免引入这样的主要横切依赖项?

  2. 当存在需要中断的现有依赖项时,最好使用哪些技术?例如,Apple 弃用了 Core Data,因此需要替换它,仅 iOS 应用程序需要成为跨平台应用程序。

【问题讨论】:

    标签: ios core-data architecture dependencies dependency-management


    【解决方案1】:

    将您的域模型与您的持久性模型隔离开来。使用 DAL 或存储库模式将持久层与域层隔离开来,使其保持隔离。将域模型映射到持久实体是昂贵且乏味的,并且破坏了自动域->关系映射工具的许多价值。

    你真的要在这里做出一个艰难的决定,你是否想要独立,如果是这样,你将不得不在架构上隔离,这将是昂贵的。虽然它会使其他事情变得更容易,但测试一个孤立的域模型是一件很美好的事情。测试行为隐藏在框架中的模型是一种痛苦的练习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      相关资源
      最近更新 更多