View层的架构
文章看自这里
View层组织注意事项
ViewController
中的书写规范- 在
viewDidLoad
中做addSubViews
和布局 - getter和setter放到最后避免影响业务逻辑阅读
- 将代理都写到一个delegate区域中,并且加上对应protocol名字
- 为按钮点击事件等,单独开一个
event response
的区域
- 在
建议使用全代码 不使用xib或者storyboard
不建议统一派生
ViewController
,可以使用AOP
或者使用NSObject的load函数(在应用启动时自动监听),实现要实现的功能 --- 尽量不要使用继承能不放在Controller中做的事情就尽量不要放在Controller中做
View层应避免
- 代码不规范导致混乱
- 过多继承导致复杂的依赖关系
- 横向依赖
- 架构设计失去传承
制作好的View架构
要做一个View层架构,主要就是从以下三方面入手:
制定良好的规范
选择好合适的模式(MVC、MVCS、MVVM、VIPER)
根据业务情况针对ViewController做好拆分,提供一些小工具方便开发
MVC MVVM等设计模式
这些设计模式其实是 规定了架构中的3个角色:数据管理者,数据加工者,数据展示者,之间的数据如何交换
对mvc的一些总结
M应该做的事:
- 给ViewController提供数据
- 给ViewController存储数据提供接口
- 响应数据请求一般来时C的
- 提供经过抽象的业务基本组件,供Controller调度
M不应该这是dataModel 而是整个Model层
C应该做的事:
- 管理View Container的生命周期
- 负责生成所有的View实例,并放入View Container
- 监听来自View与业务有关的事件,通过与Model的合作,来完成对应事件的业务。
V应该做的事:
- 响应与业务无关的事件,并因此引发动画效果,点击反馈(如果合适的话,尽量还是放在View去做)等。
- 界面元素表达
MVVM
MVVM把数据加工的任务从Controller中解放了出来,使得Controller只需要专注于数据调配的工作,ViewModel则去负责数据加工并通过通知机制让View响应ViewModel的改变。
MVVM是基于胖Model的架构思路建立的,然后在胖Model中拆出两部分:Model和ViewModel。
MVVM
viewmodel需要做的就是将json等数据转换为能给view用的model
Model层 这里的model层包括数据model层、网络请求层、数据存储层、
C负责View和ViewModel数据的绑定
MVVM就是讲MVC的C中的数据处理逻辑抽出来了
对于API的调用应该放在VM还是C中,看情况而定,如果你的请求独立于C,请求时不需要再联系ViewController就可以放在VM中,否则的话在VM中调用逻辑混乱,最好放在C中
RAC的目的1:View并不适合直接持有ViewModel。第二个目的就在于,ViewModel有可能并不是只服务于特定的一个View,使用更加松散的绑定关系能够降低ViewModel和View之间的耦合度