mvc将程序地各个模块进行分层,M(model)负责数据的存储,V(view)负责数据的显示,C(controller)负责与用户的交互逻辑,也就是业务逻辑
与中介模式的联系
中介模式通过一个中介对象来封装一系列的对象交互,使多个对象之间不需要显式地相互引用,从而使其耦合松散。MVC模式可以理解成对中介模式的一种延伸,可以将中介模式提升到一个更高的系统架构层次。MVC中的“C”(Controller)就充当着中介的角色,负责把“M”(Model)和“V”(View)隔离开,协调M和V的协同工作。
与外观模式的联系
外观模式的核心思想是:用一个简单的接口来封装一个复杂的系统,使这个系统更容易使用,也就是对软件进行分层,不同的层实现不同的功能。
而 MVC 模式将这一思想应用到了极致,它将软件拆分成视图层、模型层和控制层。这种拆分方式被广泛应用于现今的很多软件,特别是Web网站。
MVP
MVP是MVC的一个变种,很多框架都自称遵循MVC模式,但是实际上它们却实现的是MVP模式;在MVP中使用Presenter对视图和模型进行解耦,视图和模型独立发展,互不干扰,沟通都通过Presenter进行。
MVVM
MVVM(Model-View-ViewModel)最早由微软提出,ViewModel指“Model of View”,即“视图的模型”,它将View的状态和行为抽象化,让我们可以将UI和业务逻辑分开。
在MVP中,Presenter负责协调和控制Model与View的工作,保证Model和View的数据实时同步和更新,但这个操作需要程序员写代码手动控制。而MVVM中ViewModel把View和Model的同步逻辑自动化了,以前Presenter负责的View和Model同步不再需要手动地进行操作,而是交给框架所提供的数据绑定功能来负责,只需要告诉它View显示的数据对应的是Model的哪一部分即可。
双向数据绑定可以简单地理解为一个模板引擎,当视图改变时更新模型,当模型改变时更新视图
设计要点
角色:不懂得话就很危险了,建议今天的饭别吃了,好好反省
优缺点
优点:
- 低耦合行,MVC模式将试图和模型分离,可以独立发展
- 高重用性和可适用性
- 快速开发,快速部署
- 方便团队合作
缺点:
增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC 会使模型、视图与控制器分离,增加很多代码。