【发布时间】:2017-01-24 02:49:14
【问题描述】:
假设我们要创建一个包含以下内容的application:
-
异步和耗时
operationson selectedobjects - 对于某个
object,我们希望访问关联operation的status。 -
show、cancel和pause这些操作来自multiple views。
那么我的问题如下:
这些operations 和它们的progress/status 属于应用程序设计模式的什么位置?
这里是一个虚拟应用程序:
示例应用:
我们有一个应用程序,您可以在其中将不同的Filters 应用到Images。应用程序由Directory View 和Detail View 组成。
- 每个
filter可以应用asynchronously到来自每个view的任何image。 -
filter操作可以是来自views的observed和canceled。 - 如果已经为
filter-type和image启动了过滤操作,或者如果这样的filter已经产生了result,则无法启动过滤操作。 - 在这个虚拟应用程序中,视图是后续的,但在一般情况下,您不能直接在视图之间传递信息。
进展
在 MVC 或 MVVM 这样的设计模式中将 Service Layer 或 Network Controller 与 View 和 Model 分离是非常简单的,只要您不提供更多 UX feedback当有一个活动的network request 时,而不是spinner。
但是,当我正在处理一个确认符合上述标准的应用程序时,我总是要么
- 不允许
user在operation期间更改view -
Tagging对当前处理的对象的id进行操作并将其传递给views,或者直接从views/view controllers中查看Network Controller - 为
operations创建一个单独的entities,突然我的model中有一个request operation
显然有(非常臭)方法可以解决这个问题,但他们都觉得很脏,不符合模式的预期。
那么纯粹从软件架构和设计模式的角度来看,您会如何处理这个问题?
【问题讨论】:
标签: ios asynchronous design-patterns architecture network-programming