趣闻轶事

趣事网

趣闻趣事

奇闻异事

趣闻网 > 娱乐 > 体育趣闻 > >>MVP?MVC?移动开发如何选择正确的框架?

MVP?MVC?移动开发如何选择正确的框架?

设计模式和架构对创建一个成功可靠的应用程序至关重要,可是具备哪些特征才算得上一个好的架构呢?MVP、MVC和MVVM似乎都不错,该如何选择呢?

为什么以及如何选择正确的架构?

如果一开始不在乎架构、后期将会是修复错误和漏洞的噩梦。当然,程序员可以忽略像“Hello World”这样简单的应用程序中的体系结构,也可以忽略一些具有少量代码结构的应用,因为可以直接在View Controller中编写所有代码。一旦代码的量级上去了,画风就彻底变了。我们可以在View Controller中找到一大堆代码,它彻底成为了一个凌乱的视图控制器或大型视图控制器。即使我们遵循MVC指南编程,也可能发生这种情况。

良好架构的定义应该是这样的:

1、实体间平衡分配

2、可读性

3、可测性

4、易于使用和可维护性。

为什么实体之间要平衡分配?

减少复杂性最简单的方法是将不同实体之间的职责分开。它应该遵循单一责任原则,应该有一个唯一的理由来改变。

让我们考虑一个关于在视图中创建pdf并打印该报告的类的示例。现在想象一个可以执行这两个更改的类。首先,它加载来自Web服务器或数据库的数据,其次,它改变了用户界面格式。这两个任务完全不同,第一个是实质性的变化,而设置用户界面完全是一个美化的过程。按照单一责任原则,这两者是独立的责任,实体之间也应该是独立的。这样分配可以保证程序的健壮性。

为什么需要可测性?

可测性并不意味着测试。当一个有效的测试策略用于验证某些实现与其规范的一致性时,应用程序就被认为是可测试的。编写自动化测试非常简单,因为当你完成一个组合根时,它就可以独立测试了。这些测试可以让开发人员在将应用程序交付给用户设备之前查找和修复错误。

为什么易于使用?

程序员都明白,编写的代码越少,错误的机会就越少;拥有的代码越多,错误就越多。如果代码逻辑混乱,维护成本就会相应地上升。好的代码,即使一个新的开发人员接手,也可以轻松掌握。

现在我们有很多设计模式,我们可以根据我们的项目的要求选择:

    MVC

    MVP

    MVVM

    MVC

    Model-View-Controller是用于创建软件应用程序的广泛模式。目前市面上的大多数应用程序和框架都实现了这种设计模式。

    Model层是域数据所在的位置,它管理读取和写入数据以及持久状态。诸如持久性、网络代码、模型对象和操纵数据的解析器等保留在这里。

    View层是应用程序的面孔,是负责演示(用户界面)并处理用户交互的地方。

    Controller层作为黏合剂,也就是Model层和View层之间的中介(模型和视图)。它通过对用户在View中执行的操作进行响应并更新Model层的数据来改变模型。

    现在,MVC有什么问题? 如果我们尝试构建复杂的应用程序,就会变得困难重重。随着时间的推移,越来越多的代码被转移到Controller,使它们更加脆弱和臃肿。Controller与View紧密耦合,如果我们尝试在View中更改某些内容,我们必须回到Controller层并在那里进行更改,这违反了权限特征之间的均衡分配。

    谁来拯救MVC架构呢?

    MVP

    MVP代表Model-View-Presenter; Cocoa对MVC承诺可在MVP身上实现。它实现了可测试的和清晰的View和Model层分离。

    该Model层与MVC模型相同,它管理读写数据和持久状态,这部分没有变化。

    View部分包括视图和视图控制器。此处的视图将用户交互委托给Presenter层,MVP中的视图可能比较愚蠢,并且不包含可以查询模型的逻辑。

    Presenter层包含处理用户交互的逻辑。它没有任何UIKit依赖关系。Presenter的责任是与Model层进行通信,将数据转换为用户友好的格式,然后更新View层。

    在MVP中,视图控制器被视为View的子类,而不是Presenter。责任分配在Model和Presenter之间,因为View不包含任何逻辑,从而实现均衡的特征分配。代码现在更整洁,可以轻松地为Presenter进行单元测试。

    我们不能说MVP是一个完美的模式,或者是不是应该遵循MVP,而不需要符合应用程序的要求。 MVP不适合简单的应用,它将导致编写样板代码从获得视图的接口开始工作。

    MVVM

    MVVM是最新的模型——视图模式之一。它代表Model-View-ViewModel。ViewModel是观察者设计模式的实现,其中model中的任何更改都将在View和ViewModel中表示出来。现在,当我们考虑使用MVVM时,我们会考虑使用Reactive Cocoa,尽管可以使用简单的绑定来构建MVVM模式。MVVM包括:

    Model:表示应用程序消耗的数据模型。此类声明属性以类似于上述两种设计的方式来管理业务数据。

    View:它类似于MVP。MVVM视图包括视图和视图控制器。它只是保存数据并将所有内容委托给Model的层。

    ViewModel:ViewModel作为模型和视图之间的链接。它负责包装模型并准备视图所需的可观察数据。

    人们可以通过记住一些要点来使用MVVM:

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻删除,投诉邮箱:599385753@qq.com。
趣闻网娱乐门户:一直以来坚持文明办网,传播健康、娱乐的信息!

文章标签:

专题

1290
诸葛亮

诸葛亮(181年-234年10月8日[1] ),字孔明,号卧龙(也作伏龙),汉族,徐州琅琊阳都(今山东临沂市沂南县)人[2] ,三国时期蜀汉丞相,杰出的政治家、军事家、外交家、散文家、书法家、发明家、文学家。早年随叔父诸葛玄到荆州,诸葛玄死后,诸葛亮就在隆中耕种。[3-5] 后刘备三顾茅庐请出,辅佐刘备建立蜀汉。蜀汉建立后,诸葛亮被封为丞相、武乡侯,对内抚百姓,示仪轨,约官职,从权制,开诚心,布公道,对外联吴抗魏,为实现兴复汉室的政治理想,数次北伐,但因各种不同因素而失败,最后病逝于五丈原。刘禅追谥其为忠武侯,后世常以武侯、诸葛武侯尊称诸葛亮。东晋政权因其军事才能特追封他为武兴王。

1290
宇宙之谜

  宇宙是时间、空间、物质、能量 的总和。一般能理解的宇宙指人类所存在的一个时空连续系统,包括其间的所有物质、能量和时间。对于这一体系的整体解释构成了宇宙论。在中国古代就有“上下四方曰宇,往古来今曰宙”的说法(即宇的意思是无限空间,宙的意思是无限时间),宇宙一词也出自于“旁日月,挟宇宙”。近数世纪以来,科学家根据现代物理学和天文学,建立关于宇宙的现代科学理论,称为物理宇宙学。

最新趣闻

国乒抵达东京引来中外媒体追捧,现场极度混乱,央视记者急了
国乒抵达东京引

距离东京奥运会开幕还有6天。7月

+172
C罗在社交平台发布一张照片,所耗电量可以让10个英国家庭用1年
C罗在社交平台发

如果网红有段位,那么足球明星

+137
香蕉船兄弟最后一舞!曾经一起打球的兄弟,你们还好么?
香蕉船兄弟最后

火箭队战胜热火的比赛兄弟们都看

+191
恒大很可能给于汉超自由身,也不排除帮他找下家
恒大很可能给于

4月29日,在度过15天行政拘留后,

+120
足球越位是什么意思 什么情况下才算越位?
足球越位是什么

在足球竞技中,最早提出这个概念

+344
艾弗森为什么叫答案 除了答案的精神,还有四大神级纪录
艾弗森为什么叫

提起艾弗森,就想起了答案之名,

+135
瓜迪奥拉为什么离开巴萨 在欧冠失败的原因是什么?
瓜迪奥拉为什么

自从瓜迪奥拉离开巴萨后,就再也

+214
孙杨败诉被禁赛8年,林志颖李冰冰韩乔生哈文为其发声:支持维权
孙杨败诉被禁赛

国际体育冲裁法庭公布孙杨一案的

+231
林书豪晒总冠军戒指 揭露林书豪为什么能拿Nba总冠军
林书豪晒总冠军

林书豪晒总冠军戒指照片曝光之后

+148

风云人物

应采儿
应采儿

应采儿

+430
王允
王允

王允(137年-192年),字子师,太原祁

+124
陈法蓉
陈法蓉

陈法蓉

+171
宫崎骏
宫崎骏

宫崎骏

+340
邝美云
邝美云

邝美云

+419
宋慧乔
宋慧乔

宋慧乔

+195
宋承宪
宋承宪

宋承宪

+139
林允儿
林允儿

林允儿

+165
周润发
周润发

周润发

+160

月度点击排行榜

回到顶部