1.MVC
![](https://img.haomeiwen.com/i6662793/30c48993ef180096.png)
- View:视图层 ui界面
- controller:控制器 接受并处理用户请求通知Model改变,并将Model返回给 View
- Model:模型 数据
优点
- 耦合性低:视图层和业务层分离,这样允许更改视图层代码而不用重新编译模型和控制器代码.如果改变数据层,试图会正确的显示它们,由于MVC的应用程序的三个部件是相互独立的,改变其中一个不会影响到其他两个,所以这种设计思想有良好的松耦合的构件.
2.重用性高:MAC模式允许各种不同样式的视图来访问同一个服务端代码.应为多个视图能共享一个模型.
3.生命周期成本低:MVC使开发和维护用户接口的技术含量降低
4.部署快:使用MVC模式开发时间相当大的缩减,他使程序员(JAVA开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力表现在形式上
5.可维护性高:分离视图层和业务层逻辑也是WEB应用更易于维护和修改.
6.有利于软件工程化管理:由于不同的层各司其职,每一层不同的应用具有某些特性,有利于通过工程化、工程化管理程序代码,可以使用控制器来连接不同的模型和视图去完成客户的需求.控制器可以根据用户需求选择模型进行处理,然后选择视图处理结果显示给用户.
缺点
1.不适合小型、中等规模的应用程序
2.增加系统结构和实现的复杂性:对于简单的界面,严格遵循MVC,使模型,视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行率.
3.视图与控制器间过于紧密的连接:试图与控制器是相互分离的但却是紧密连接的部件,视图没有控制器的存在,其应用是很有限的,反而一直,这样妨碍了他们的独立重用.
4.视图对模型数据的低效率访问:依据模型操作接口的不同,视图可能需要多次调用才能获取足够的显示数据,对未变化的数据不必要的频繁访问,也将损害操作性能.
5.一般高级的界面工具或构造器不支持
2.MVVM
![](https://img.haomeiwen.com/i6662793/15d7397869a958c4.png)
- View:视图层,展示数据
- ViewModel :使view与Model没有直接的联系,通过ViewModel交互. View数据变化会通过ViewModel同步到Model,Model数据变化会通过ViewModel同步到View.(例如vue)
- Model:模型 数据 可以在Model中定义数据修改和操作业务逻辑.
优点
1.低耦合:视图view可以独立于Model变化和修改,一个ViewModel可以绑定到不同的‘View’上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变.
2.可重用性:可以把一些视图逻辑放在ViewModel里面,让很多view重用这段视图逻辑.
3.独立开发:开发人员可以专注业务逻辑和数据的开发,设计人员可以专注页面设计
4.可测试:界面向来比较难预测是,测试可针对ViewModel来写.
网友评论