模型上的操作在哪里属于应用程序设计模式?

Aer*_*ows 13 architecture design-patterns asynchronous network-programming ios

假设我们想要application包含以下内容:

  • 所选的异步耗时 operationsobjects
  • 对于某些object我们要访问的status关联的operation.
  • 的能力show,cancelpause从这些操作multiple views.

然后我的问题如下:

这些operations及其progress/status属于应用程序设计模式的位置在哪里?

将它置于上下文中是一个虚拟应用程序:

示例应用:

我们有一个应用程序,您可以在其中应用不同FiltersImages.申请包括Directory ViewDetail View.

  • 每个filter都可以应用于asynchronously任何image一个view.
  • filter-operation可以observedcanceled来自两个views.
  • 如果已经有一个用于启动的过滤操作无法启动filter-typeimage,或者如果这样的filter已经产生了result.
  • 在这个虚拟应用程序中,视图是后续的,但在一般情况下,您将无法在视图之间直接传递信息.

目录视图

在此输入图像描述

进展

脱钩Service LayerNetwork ControllerViewModel在设计模式类似MVC或者MVVM是相当简单的,只要你不提供更多的UX feedbackspinner时,有一个积极的network request.

但是,当我正在申请确认上述标准时,我总是最终结束

  • 在一个期间不允许user改变viewoperation
  • Taggingid当前处理的对象的操作并将其传递给views,或Network Controller直接从中查找views/view controllers
  • 创建一个单独entitiesoperations,突然我有一个request operation在我的model

所以很明显有(非常有臭味的)方法可以解决这个问题,但是他们都感觉很脏,而且不符合模式的意图.

所以纯粹从软件架构设计模式的角度来看,你会如何接近这个?

cod*_*kix 0

有很多方法可以做到这一点。但这里有一个想法......也许您可以使用消息传递作为样式:定义一个“状态”通道,可能使用发布-订阅模型来获取正在进行的操作的状态/进度。这样,执行操作的进程就会在通道上发布状态,并且您的多个视图会订阅该通道并显示状态。现在,如果您必须取消/暂停操作,您可能需要另一个控制通道。你必须管理并发、顺序等。