iOS - VIPER 架构模式

1、VIPER

  • 从字面意思来理解,VIPER 即 View Interactor Presenter Entity Router(展示器(视图) 交互器 协调器 实体(数据) 路由器),迄今为止,划分责任的粒度是很好的选择。VIPER 在责任划分层面进行 了迭代,VIPER 分为五个层次:

    • 展示器 -- 包含 UI 层面的业务逻辑以及在交互器层面的方法调用。
    • 交互器 -- 包括关于数据和网络请求的业务逻辑,例如创建一个实体(数据),或者从服务器中获取一些数据。为了实现这些功能,需要使用服务、管理器,但是他们并不被认为是 VIPER 架构内的模块,而是外部依赖。
    • 实体 -- 普通的数据对象,不属于数据访问层次,因为数据访问属于交互器的职责。
    • 路由器 -- 用来连接 VIPER 的各个模块。
  • 1)VIPER 模式下的三个特性的分析:
    • 任务均摊 -- 毫无疑问,VIPER 是任务划分中的佼佼者。
    • 可测试性 -- 不出意外地,更好的分布性就有更好的可测试性。
    • 易用性 -- 必须为很小功能的类写出大量的口。
  • 2)iOS VIPER 示意图:

    • 基本上,VIPER 模块可以是一个屏幕或者用户使用应用的整个过程。VIPER 是第一个通过路由器实现明确的地址导航模式。
    • 当我们把 VIPER 和 MV(X) 系列作比较时,我们会在任务均摊性方面发现一些不同: Model 逻辑通过把实体作为最小的数据结构转换到交互器中。Controller/Presenter/ViewModel 的 UI 展示方面的职责移到了 Presenter 中,但是并没有数据转换相关的操作。
时间: 2024-09-24 17:10:14

iOS - VIPER 架构模式的相关文章

iOS - MVP 架构模式

1.MVP 从字面意思来理解,MVP 即 Modal View Presenter(模型 视图 协调器),MVP 实现了 Cocoa 的 MVC 的愿景.MVP 的协调器 Presenter 并没有对 ViewController 的生命周期做任何改变,因此 View 可以很容易的被模拟出来.在 Presenter 中根本没有和布局有关的代码,但是它却负责更新 View 的数据和状态.MVC 和 MVP 的区别就是,在 MVP 中 M 和 V 没有直接通信. MVP 是第一个如何协调整合三个实际

iOS - MVC 架构模式

1.MVC 从字面意思来理解,MVC 即 Modal View Controller(模型 视图 控制器),是 Xerox PARC 在 20 世纪 80 年代为编程语言 Smalltalk-80 发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中.其用意在于将数据与视图分离开来.在 iOS 开发中 MVC 的机制被使用的淋漓尽致,充分理解 iOS 的 MVC 模式,有助于我们程序的组织合理性. MVC 的几个明显的特征和体现: View 上面显示什么东西,取决于 Model. 只要 M

iOS - MVVM 架构模式

1.MVVM 从字面意思来理解,MVVM 即 Modal View ViewModel(模型 视图 视图模型).MVC 是一个用来组织代码的权威范式,也是构建 iOS App 的标准模式.Apple 甚至是这么说的.在 MVC 下,所有的对象被归类为一个 model,一个 view,或一个 controller.Model 持有数据,View 显示与用户交互的界面,而 View Controller 调解 Model 和 View 之间的交互.然而,随着模块的迭代我们越来越发现 MVC 自身存在

精华阅读第 9 期 |滴滴出行 iOS 客户端架构演进之路

「架构都是演变出来的,没有最好的架构,只有最合适的架构!」最近,滴滴出行平台产品中心 iOS 技术负责人李贤辉接受了 infoQ 的采访,阐述了滴滴的 iOS 客户端架构模式与演变过程.李贤辉也是移动开发精英俱乐部中的一员,所以本期重点推荐了这篇文章. 更多精彩,请看这里,内容系国内 ITOM 管理平台 OneAPM 整理: 滴滴出行 iOS 客户端架构演进之路 成长为 iOS 大 V 的秘密 React Native开源项目-iOS新浪微博客户端 可靠 UDP 传输 精华阅读第8期|Alpha

iOS 开发中的 Flux 架构模式

本文讲的是iOS 开发中的 Flux 架构模式, 在半年前,我开始在 PlanGrid iOS 应用程序中采用 Flux 架构(开发).这篇文章将会讨论我们从传统的 MVC 转换到Flux的动机,同时分享我们目前积累到的经验. 我尝试通过讨论代码来描述我们大部分的 Flux 实现, 它用于我们今天的产品中. 如果你只对综合结果感兴趣, 请跳过这篇文章的中间部分. 为什么从 MVC 转移 为了引入我们的决定, 我想要先谈一谈 PlanGrid 这个应用遇到的一些挑战.一些问题仅针对企业级应用程序,

Square对iOS App架构的新尝试---Ziggurat

今年六月,我做了一场关于避免臃肿的ViewController的演讲,用Swift讲解了一种采用"单向数据流"的架构模式.当时并没有发布相关的博客,甚至没有给这个架构起个名字.现在两者都有了.首先介绍一下Ziggurat:它是一种通过不可变的视图模型和单向数据流来实现的分层的.易测试的架构模式. 这个架构的名字Ziggurat是根据阶梯状的金字塔得来的.像金字塔的阶梯一样,数据以数据流的形式单向地沿着App的层级传递,并逐层缩小.单向不可变的数据流可以减少认知负载,同时使类也变得更加瘦

IOS应用架构思考二(网络图片库)

移动端架构中图片库是非常重要的一环,其实图片库也可以理解为网络库的一种特殊使用模式,为了满足需要,图片库至少要满足以下特点: 提供一个加载入口,通常以UIImageView的类别方法setImageWithURL:...开始 支持异步网络加载图片 支持内存缓存和文件缓存 确保同一张图片不会被重复下载 主流图片格式的解码 著名的优秀关于图片加载的库有: SDWebImage AFNetworking EGOImageLoading 已经年久失修 1. Load入口 关于Load入口方式,一般有两种

设计模式、企业应用架构模式和架构模式学习总结

设计模式: 简单工厂模式 工厂方法模式 抽象工厂方法模式 单例模式 外观模式 生成器模式 原形模式 中介者模式 代理模式 观察者模式 命令模式 迭代器模式 组合模式 模版方法模式 策略模式 状态模式 备忘录模式 享元模式 解释器模式 装饰器模式 职责链模式 桥接模式 访问者模式 企业应用架构模式 事务脚本 大家都懂的写法 领域模型 DDD的建模方法:领域对象.value对象 Unit of Work Entity Framework已经集成这功能了 Lazy Load 同上 查询对象 针对Spe

软件体系架构模式在J2EE中的应用

本文介绍了软件体系架构产生的背景和架构模式的基本理论.重点介绍管道与过滤器体系架构模式的结构,实现,优缺点等,然后以J2EE的Servlet Filter为例进行剖析它是怎样应用该架构模式的,最后简单阐述了在其它J2ee应用中(Jboss和Axis)的实践. 软件体系架构 1.软件体系架构产生背景 在经历60年代的软件危机之后,使人们开始重视软件工程的研究.来自不同应用领域的软件专家总结了大量的有价值的知识. 当初,人们把软件设计的重点放在数据结构和算法的选择上,如Knuth提出了数据结构+算法