• 0
  • 0
分享
  • 一图详解五种前端架构——软件测试圈
  • quinn 2024-09-20 16:05:45 字数 1437 阅读 625 收藏 0

  无论是 iOS 还是 Android 开发,前端架构模式都是应用程序开发中最常用的模式之一。开发人员引入这些模式是为了克服早期模式的局限性。那么,它们有什么不同呢?又解决了什么问题呢?

1.png

  1. MVC (Model-View-Controller)

  MVC 是最古老的模式,可追溯到近 50 年前。

  ·Model:封装了数据以及对数据的操作。

  · View:定义了数据的展示,并负责接收用户输入。

  · Controller:定义了对用户操作的响应。作为 Model 和 View 的连接,处理用户操作和数据上的改变。

  MVC 模式的发明大大降低了前端数据和事件的管理难度。

  MVC 模式的局限性在于所有事件都在 Controller 中处理,使得其比较臃肿。并且 View 和 Controller 的绑定过于紧密,不利于代码复用。

  2. MVP (Model-View-Presenter)

  在 MVP 模式中,View 和 Model 不能直接通信,必须通过 Presenter 来更新数据。这样,View 和 Model 就解耦了,可以作为单纯的展示层而存在。

  MVP 模式由于需要做大量的数据同步工作,Presenter 也会和 View 绑定过于紧密。

  3. MVVM (Model-View-ViewModel)

  MVVM 由微软提出,用 ViewModel 的概念接管了 Presenter 的数据同步工作,这样省去了很多在 Presenter 里面的模版代码,架构和代码逻辑更加清晰。

  4. MVVM-C (Model-View-ViewModel-Coordinator)

  虽然 MVVM 省去了数据绑定的模版代码,但其在架构分层上只是用 ViewModel 取代了 Presenter,所以在实现时还是会有大量逻辑的堆砌,这常常被称为“垃圾抽屉”。并且 ViewModel 通常也不能在多个 View 间重用。这时我们可以加入一个 Coordinator 来协调 ViewModel 之间的跳转,来提高其复用性。

  5. VIPER (View-Interactor-Presenter-Entity-Router)

  VIPER 架构并不是基于 MVC 的改进,它是全新的架构模式,也是架构职责划分最明确的。然而其复杂度也是最大的,不适合较小规模的项目。

  · View:定义了数据的展示,并负责接收用户输入。

  · Entity:定义数据对象,但是不包括对数据访问和操作。

  · Interactor:负责从 Entity 获取数据,执行数据操作逻辑。这里的数据结构独立于界面显示。

  · Presenter:从 Interactor 获取数据,展示给用户。

  · Router:负责模块间的跳转。

  总体看来,每种模式都需要处理以下 3 个问题:

  1. 数据源:一般从后端服务和存储中获得,其数据模型接近于后端。

  2. 数据绑定:将一个或多个数据源整形处理为符合前端展示需要的数据,其数据模型可以一步到位接近前端模型,或者可以是一个中间状态方便页面间复用。

  3. 事件响应:响应用户的操作,并对数据进行操作。

  各个模式根据具体需求采用了不同的分层和解耦。我们需要根据需求来选取合适的架构模式。


作者:李华    

来源:http://www.51testing.com/html/40/n-7798840.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据thechinaproject报道,米哈游正进行避开30%“苹果税”的尝试,从而在收入方面获得更多显著增长。  外媒表示,苹果公司和米哈游似乎在今年变得比以往更亲近。  今年三月,苹果首席执行官TimCook访问中国时,曾停留在米哈游上海办公室,库克与《原神》背后的“团队”,进行了会面,并与米哈游创始人互致问候。  而在此之后的苹果的年度发布会上,苹果展示了两款米哈游的游戏,以展示新款iPhone15系列在游戏性能方面的表现。  然而在幕后,这两家公司一直存在分歧。自八月以来,米哈游试图两次从而绕过30%的“苹果税”(IT之家注:苹果在AppStore内的每笔交易中收取高达30%的佣金)...
            0 0 1030
            分享
          •        在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/4G/5G/WiFi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。目前移动端产品的使用用户所处的网络并非完全流畅的网络环境,因移动端产品使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。毕竟考虑到各种场景的客户端展示及容错,能极大提升产品印象和用户体验。本文就和大家分享一下如何上手弱网测试,弱网测试工具的使用。1. 什么是弱网测试?       弱网测试作为健壮性测试的重要...
            12 12 3169
            分享
          •   前言  在做web自动化的时候,对于一些弹出的提示信息的字体颜色,当然一般都是红色的。那么当我们跑自动化时候,如何判断提示新的字体颜色是否我们预期的结果呢?  个人思路  安静这里先介绍下自己的思路:  ·先获取到提示信息的元素坐标点;  ·想办法获取到前端中该元素的颜色属性值;  ·最后通过获取的属性值与我们的预期值进行比较。  猛然一看该思路,啥用没有。但是我们可以先翻阅selenium中的官方文档,看看官方文档中有没有一些帮助内容。  安静从官方文档中找到了:def value_of_css_property(self, property_name):  ...
            13 13 1979
            分享
          • 软件性能测试中有一类很重要的测试——负载测试,包括并发测试和容量测试。负载测试的重要工作在于找到系统的性能拐点。在并发测试中我们不断地增加事物的用户并发数,观察系统所可以接受的并发数是否与设置的并发数保持一致,或者在增加并发数的时候观察系统的响应时间是否在可接受的范围之内(比如<3秒》)。当并发数少的时候,实际并发数与设置并发数是一致的,当系统并发数达到一定的数量后,实际并发数保持恒定,不会受到设置并发数的增加而增加了。或者系统的响应时间会超过设定的目标值。如图一所示,A即为我们找到的并发测试的拐点。图一:负载测试的拐点同样,在容量测试中,我们不断地往数据库中灌入数据,在开始数据量比较少...
            0 0 2412
            分享
          •   根据一份内部通知和两名知情人士的说法,特斯拉上海工厂当天已暂停生产。该厂当天的早班被取消,工人们被告知可以开始休假了,厂方也未说明具体原因。这比之前12月最后一周停止厂内大部分工作的计划稍微提前了一点。路透社此前曾披露,特斯拉计划从本月25日起至明年1月1日暂停该厂ModelY车型的生产。  报道称,特斯拉上海工厂暂停生产正赶上新冠肺炎病例在中国大幅增加。与此同时,特斯拉还面临库存增加的问题。作为特斯拉的全球第二大市场,中国市场正面临下行压力。消息人士透露,过去一周,特斯拉上海工厂的产能主要用于生产出口车型。  路透社补充说,年底假期暂停生产并不是特斯拉上海工厂的惯常做法。去年12月最后一...
            0 0 797
            分享
      • 51testing软件测试圈微信