android 在开发时需要软件架构模式。 MVC 和 MVP 是广泛使用的模式,它们使开发人员有机会模块化项目文件并确保代码被覆盖。
这使开发人员的工作变得轻松。
关键精华
- MVC(模型-视图-控制器)将应用程序数据、用户界面和控制逻辑分成三个不同的组件,促进模块化。
- MVP (Model-View-Presenter) 也将这些关注点分开,但添加了一个 Presenter 组件来管理视图和模型之间的通信。
- MVC 更适合具有复杂用户交互的大型应用程序,而 MVP 适用于具有简单界面的小型项目。
MVC vs 最小化可行性产品
MVC 是一种架构模式,它将应用程序分为三个主要组件:模型、视图和控制器。 该模型表示应用程序的数据和业务逻辑。 最小化可行性产品 是另一种类似于 MVC 的架构模式,但有一些关键差异。 MVP 模型仍然代表应用程序的数据和业务逻辑。
MVC 是一种以控制器作为入口点的软件结构。视图层作为单个单元或类实现。
它的所有 3 个呈现层都密切相关; 因此,进行任何更改都可能很复杂。
可以说,MVC 模式启发了 MVP 模式。 然而,MVP 是一个 UI 演示文稿模式。 这并没有描述整个过程,但它解释了视图的结构。
View 构成了 UI 元素,并且它的所有元素都松散地放在一起。
对比表
比较参数 | MVC | 最小化可行性产品 |
---|---|---|
意 | MVC 代表模型-视图-控制器。 | MVP 代表模型-视图-演示者。 |
入口点 | 这个的入口点是Controller。 | 这个的入口点是View。 |
视图和模型关系 | 此应用程序遵循模块化和单一职责原则。 | 这里 View 知道 Presenter。 |
继模块化 | 此应用程序不遵循任何模块化或遵守单一职责原则。 | 此应用程序遵循模块化和单一责任原则。 |
修改 | 在这里进行修改很困难。 | 在这里进行更改和修改数据并不复杂。 |
什么是MVC?
MVC 模式意味着模型-视图-控制器。 代码分为这三个部分。 当开发人员为应用程序创建文件时,他们需要选择其中一个层。
第一层,模型,负责存储应用程序的数据。 它根本不知道接口。 该模型负责与数据库和网络层通信。
视图是应用程序的用户界面或 UI 层。 它包含屏幕上明显的组件。 所有保存在Model中的可视化数据都是View提供的。
用户可以与之交互。 最后一层,Controller,是为了连接Model和View而开发的。 它收集用户的行为,并据此更新模型。
MVC 的一些缺点有时会使工作变得困难。 这里的视图和模型紧密相关。
因此视图的要求会对模型产生影响并降低业务逻辑。 同时,这种紧密关联使得 View 单元测试具有挑战性。
什么是 最小化可行性产品?
MVP 模式表示 Model-View-主持人. 它是MVC的一个更好的版本,通过使用MVP,开发人员可以高效地构建承接的项目代码。
MVP的特性使其非常受开发者欢迎。 其干净且可维护的代码数据库和可测试性使其非常有用。
它也包含三个组成部分。 首先是模型层,它是用来存储数据的。 它维护域逻辑规则并与数据库和网络层进行通信。
下一层,View,是这个应用程序的用户界面。 该层提供所有数据可视化,并跟踪用户的操作以通知演示者。
最后一层是 Presenter,它从模型中获取数据,使用 UI 逻辑,然后确定应该显示什么。 用户可以在 View 中输入,MVP 相应地组织 View 的状态。
然而,MVP 并非没有所有问题。 MVP 的控制者被移除。
因此,为了弥补控制器的不足,Presenter 必须处理流。 所以最终,演示者设法更新模型并展示它。
MVC 和 MVP 之间的主要区别
- MVC 代表模型-视图-控制器,而 MVP 代表模型-视图-呈现器。
- MVC 的入口点是 Controller,而 MVP 的入口点是 View。
- 在MVC应用中,View对Controller没有任何了解,相反,在MVP中,View对Presenter有很好的感知。
- 在 MVC 中,代码层紧密相连,但在 MVP 中,代码层松散相关。
- 由于 MVC 带有紧密联系的代码层,因此修改它的数据并不容易,但是在 MVP 的情况下,由于代码层之间的联系松散,因此很容易进行更改。
- MVC 不遵守单一职责原则,但 MVP 确实遵循它。
- https://ieeexplore.ieee.org/abstract/document/5567323/
- https://research.tue.nl/files/48628529/Lou_2016.pdf
最后更新时间:11 年 2023 月 XNUMX 日
Sandeep Bhandari 拥有塔帕尔大学计算机工程学士学位(2006 年)。 他在技术领域拥有 20 年的经验。 他对各种技术领域都有浓厚的兴趣,包括数据库系统、计算机网络和编程。 你可以在他的网站上阅读更多关于他的信息 生物页面.
感谢作者以如此易于理解的方式分解了 MVC 和 MVP 的复杂性。
完全同意! MVC 与 MVP 表对于理解两者之间的细微差别特别有帮助。优秀作品。
这篇文章设法使软件架构中更复杂的技术方面变得易于理解。向作者致敬。
MVC 和 MVP 的细分既全面又引人入胜。非常值得称赞的一部作品。
这是非常有用的信息。我从来不知道 MVC 和 MVP 之间的区别如此清晰和明显。我一定会在以后的软件架构中应用这些原则。
很高兴看到对 MVC 和 MVP 的详细探索,并强调了它们的优点和缺点。总体来说是一篇经过充分研究的作品。
遗憾的是,MVC 模式视图和模型之间的紧密关联使得单元测试变得具有挑战性,尤其是对于更复杂的应用程序。 MVP的松耦合很好地解决了这个问题。
看到关于软件架构模式的富有洞察力的讨论令人耳目一新。 MVC 和 MVP 之间的比较很有启发性。
我完全同意。 MVP 的结构允许更有效的测试和故障排除。
我非常不同意 MVC 更适合大型应用程序。 MVP 的设计灵活性也有利于大型项目。