小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
通过问题看本质!!!
软件通过架构,可以管理复杂的应用程序。我们使用架构的目的很明显,就是把复杂的事情简单化。使得软件的可测性高、易用性高。
MVC架构
控制器持有View,View改变时,通知vc去做一些事情,处理逻辑。
数据的加载也是在控制器中完成的,数据改变时,将最新的数据展示到界面上。
控制器是View和Model的桥梁,他们之间互相不知道对方的存在。
苹果的TableView就是典型性的MVC架构,TableView不关心数据是怎么获取的,View是不知道Model的存在, 它把UI控件暴露出来,提供给外界使用。
控制器负责帮View和Model建立连接,负责处理各种事情。
优点:所以View和Model的可复用度高,耦合性低。
缺点:控制器会变得臃肿,
MVC的变种
View持有Model,使得View更具有封装性,只需要初始化和设置Model即可。
但是这样View和Model绑定在一起了,无法单独使用,View依赖Model。
MVP
和MVC很像,但是MVC中,Controller和View是耦合紧密在一起的
P层不关心Controller的生命周期,也没有UI的布局代码。它只是负责更新数据和视图的状态。需要手动绑定事件和数据。
控制器将View和自身传递给了P层,相当于把控制器的职责转交到了p层;
P层持有Controller和View,只需要调用View层提供一组更新的协议方法,就能完成业务处理和UI展示。
主要的职责在p层(数据调配、事件处理)和Model层(网络请求)
优点:
实现了控制器、View、Model的解耦。便于测试
缺点:
视图和Persenter的交互会过于频繁,但是P层和View层绑定在一起了,很难复用
需要手动绑定数据和事件,代码量会增多