下载和管理模型资源的设计模式

时间:2016-04-08 03:28:59

标签: ios design-patterns mvvm singleton

在移动应用程序中下载和管理模型资源是一项相当常见的任务。模型资源通常采用存储在云中的图像或视频数据的形式。应用程序的一般流程是获取模型列表,每个模型都有一个URL或资源链接,然后下载资源,将其缓存在设备上,然后播放/显示它。

在这样做的过程中,我遇到了一些障碍后想出了一些问题。

首先,在应用程序架构中应该执行此下载吗?模型类显然不是这个地方,因为当用户浏览应用程序时,您无法保证模型对象将保持实例化状态,这将导致下载请求意外取消。如果您正在使用MVVM体系结构,则下载的位置似乎是视图模型,但是再次面临与视图模型附加到视图控制器实例并且这些请求与视图模型相关联的相同问题。当视图模型解除分配时,请求将返回但原始调用者将不存在。

其次,单身设计模式在这里是一个合适的用例吗?一般而言,出于in this post所述的原因,应避免使用单身模式。但是,我没有看到确保请求返回并在视图导航之外成功缓存而不使用单例的方法。

有没有人成功建立了可以做到这一切的模型管理器?我设想的是某种单例对象与一个协议相结合,模型类符合该协议,提供执行请求所需的信息。

编辑:

我玩的另一种可能性是基于服务的架构,类似于feathersjs。

1 个答案:

答案 0 :(得分:0)

这一切都取决于所需的用户体验和资源数量,但我通常不得不在实际需要之前下载和缓存图像,以免用户等待强制实施一个viewcontroller。

对于图像,我通常使用https://github.com/rs/SDWebImage

视频,我发现用户希望将其预加载一段时间,因此除非需要离线使用,否则不能浪费空间预先缓存它们。

对于单身人士的使用,我避免使用它。如果它在数据库中,则可以在任何地方检索它,如果在内存中,它可以从控制器传递到控制器。使用它们非常普遍(甚至很受欢迎),有些人也会使用app委托。