dede推荐评级网站模版,河北网络科技公司有哪些,wordpress全站pjax,腾讯微博做网站外链步骤大家都知道#xff0c;使用架构的目的是使程序模块化#xff0c;做到模块内部的高聚合和模块之间的低耦合#xff0c;使得程序在开发的过程中#xff0c;开发人员只需要专注于一点#xff0c;提高程序开发的效率。那么MVC、MVP、MVVM#xff0c;该怎么选#xff1f;在什…大家都知道使用架构的目的是使程序模块化做到模块内部的高聚合和模块之间的低耦合使得程序在开发的过程中开发人员只需要专注于一点提高程序开发的效率。那么MVC、MVP、MVVM该怎么选在什么最省去开发时间和业务成本
本篇来彻底理解MVC、MVP、MVVM这三个架构模式。首先我们来了解这三个架构模式原理简单解析
MVC、MVP、MVVM简单解析
MVCModel-View-Controller Model数据模型用来存储数据 View视图界面用来展示UI界面和响应用户交互 Controller控制器(大管家角色)监听模型数据的改变和控制视图行为、处理用户交互。 MVC是比较直观的架构模式用户操作-View负责接收用户的输入操作-Controller业务逻辑处理-Model数据持久化-View将结果反馈给View
三者关系 在MVC中View是可以直接访问Model那么View里会包含Model的信息不可避免的也包含一些业务逻辑。在MVC模型里更关注的Model改变而同时有多个对Model的不同显示即View。所以在MVC模型里Model不依赖于View但View是依赖于Model。而对Android来说activity基本承担来view层和controller层两种角色并且和model层耦合严重在逻辑复杂的界面维护起来很麻烦。那么这时候MVP出来切断View和Model之间的关系。
MVPModel-View-Presenter
MVP 模式将 Controller 改名为 Presenter同时改变了通信方向。 Model数据模型用来存储数据 View视图界面用来展示UI界面和响应用户交互 Presenter展示器Presenter是从Model中获取数据并提供给View层简单的就是当View需要去更新数据时首先找PresenterPresenter然后去向Model请求数据从Model获取数据之后通知PresenterPresenter再通知View去更新数据。简而言之返回什么数据给View。 三者关系 各部分之间的通信都是双向的。View 与 Model 不发生联系都通过 Presenter 传递。View 非常薄不部署任何业务逻辑称为被动视图Passive View即没有任何主动性而 Presenter非常厚所有逻辑都部署在那里。
MVVMModel-View-ViewModel m:model 数据层 v:view 视图层 vm: 数据双向绑定 MVVM(Model-View-ViewModel)是一种软件架构设计模式它是MVC的增强版实质上和MVC没有本质区别MVVM是以“数据模型数据双向绑定”的思想作为核心因此在View和Model之间没有联系而是通过ViewModel进行交互而且Model和ViewModel之间的交互是双向的因此视图数据的变化会同时 修改数据源而且数据源数据的变化也会立即反应到View上。 三者关系 这里是引用资料摘要《Android核心开发手册》点击可查看详细进阶板块。 开发选型
开发成本
MVC通常是最简单的因为它没有明确的分层。但随着项目复杂度的增加可能会导致代码耦合问题增加维护成本。MVP相对来说需要更多的代码因为它需要为每个视图编写一个Presenter但它有助于更好地分离关注点。MVVM通常需要更多的初始工作因为它们需要创建ViewModel或Intent并且通常使用数据绑定库这可能需要学习和实施额外的工具和框架。
测试成本
MVC的测试通常较为困难因为它的代码耦合度高。MVP使单元测试更容易因为逻辑分离得更清晰。MVVM通常也易于测试因为它们鼓励将业务逻辑与UI分开。
维护成本
随着时间的推移MVC可能会导致代码膨胀和维护困难因为它的耦合度高。 MVP和MVVM提供了更好的可维护性因为它们分离了关注点。
学习成本
MVC相对容易学习因为它没有太多的抽象概念。MVP需要理解Presenter的角色可能需要一些学习曲线。MVVM需要理解ViewModel或Intent以及数据绑定的概念可能需要更多的时间来学习和实践。
项目复杂度
对于小型项目MVC可能足够因为它更简单。对于中等到大型项目MVP、MVVM可能更适合因为它们有助于保持代码的可维护性和可扩展性。
总结
看到这里你心中想必肯定有答案了吧选择架构模式应该是一个全面的决策需要考虑成本、可维护性、测试性、团队技能以及特定业务需求。可能需要在项目的不同部分使用不同的架构模式以便根据情况进行最佳优化。
架构和模式并不是说让你的代码量更少了往往可能还会增大但是它帮你在逻辑上更简单的了很好的定义了单一原则提供了更好的扩展性方便定位问题以及后续需求变更时不至于满篇的去改一大堆东西。