Introduction

2018-06-02  本文已影响19人  V_coa

Application Architecture

​ App 架构是关于怎么组织设计构建应用,应用是怎么划分不同的接口和概念层,控制流和数据流是怎么在不同的层中进行操作流动。

​ 例如,在 Apple 的 MVC 中,有如下 3 层,model, view 和 controller layer

image.png

​ 箭头部分表示着 3 层是怎么通信的,这个图简单的说明了 MVC 是如何组织的。应用架构还涉及其他的方面,例如组件是怎么组织起来的,事件的在各层中的流向。

Model and View

​ 在一定层面来说,App 的架构是由一系列不同层次组件的集合组合成的。在这里称为 categories layers

,它是一类符合某种基本原则或者责任的接口或者代码

​ 在这些 layer 中 model layerview layer通常都会有,model layer 是应用中的内容来源,存储在磁盘的称为 document model,view layer 用于展示和交互

Applications Are a Feedback Loop

​ view layer 和 model layer 需要通信,假设 view layer 和 model layer 分离,并没有任何关联,如果他们通信就需要一些手段:

image.png

这样的结果就呈现了一个 feedback loop,view 渲染和接受用户的一些输入,每个应用如何处理这些交互和通信,相关的依赖,和转换这些上图这些箭头的流程,view action触发事件,例如点击按钮,view action 传递给 model layer,这里可能会转化为 model action(更新 model 对象的操作),view actions 到 model actions 这个转化称为 interaction logic,当 model layer 更新后,通过一些如何 delegate, Notification callbacks 或者其他机制来更新 view layer,称为 presentation logic

​ 有一些 view 状态是不依赖 document model 的,例如 navgation state,这些 state 称为 view state,如果一些状态的维护是在 model layer 和相关的改变是满足 feedback loop 的,称为 unidirectional data flow

Architectural Technologies

​ Notifications, KVO 都可以产生当属性发生变化的通知,这是 Cocoa 为我们提供的技术,其他一些三方的技术,例如 reactive programming 是另一种技术可以实现上面的效果,但是和 Notifications, KVO 不同的是,它关注的是 source 和 destination 的转化。

Application Tasks

​ view 通过都要构建的,model 也是,处理 model 的可能被更新的操作。和当 model 被更新后,相关的更新处理,所以会有以下需要处理的:

1.Construction谁处理 model 和 views 的通信

2.Updating the model怎么处理 view actions

3.Changing the view怎么使 model data 被 view 渲染

4.View state怎么处理 navigation 和其他没有 model 状态

5.Testing测试的覆盖率等

上一篇下一篇

猜你喜欢

热点阅读