首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该在iOS、Swift的VIPER架构中的哪里定义业务逻辑

在iOS、Swift的VIPER架构中,业务逻辑应该定义在Interactor层。

VIPER架构是一种用于构建可扩展、可维护的iOS应用程序的架构模式。它将应用程序分为不同的模块,每个模块都有其特定的职责。VIPER架构的五个主要组件分别是:View、Interactor、Presenter、Entity和Router。

在VIPER架构中,业务逻辑应该由Interactor负责处理。Interactor是VIPER架构的核心组件,它负责处理业务逻辑、数据获取和处理,并将结果返回给Presenter。Interactor可以与数据层进行交互,例如通过调用API获取数据或与数据库进行交互。它还可以处理数据的转换和处理,以满足业务需求。

定义业务逻辑的Interactor应该包含以下功能:

  1. 处理用户交互:Interactor接收来自View的用户交互事件,并根据业务规则进行处理。
  2. 数据获取和处理:Interactor负责从数据层获取数据,并对数据进行处理和转换,以满足业务需求。
  3. 业务规则实现:Interactor实现应用程序的业务规则,例如验证用户输入、计算数据等。
  4. 与Presenter交互:Interactor将处理后的数据传递给Presenter,供其更新UI或执行其他操作。

在腾讯云的产品中,可以使用云函数(Serverless Cloud Function)来实现Interactor的功能。云函数是一种无服务器计算服务,可以让开发者无需关心服务器运维,只需编写业务逻辑代码即可。腾讯云云函数支持多种编程语言,包括Node.js、Python、Java等,开发者可以根据自己的喜好和项目需求选择合适的语言进行开发。

腾讯云云函数产品介绍链接:https://cloud.tencent.com/product/scf

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

聊聊iOS MVC、MVP、MVVM以及 VIPER等代码组织方式

但是现实我们View依然跟Model耦合,因为如果完全按照这个理想化MVC的话,View(cell)层设置都应该在 Controller,这样的话,Controller会更臃肿。...二、MVP“架构” MVC缺点在于并没有区分`业务逻辑业务展示`, 这对单元测试很不友好. MVP针对以上缺点做了优化, 它将业务逻辑业务展示也做了一层隔离, 对应就变成了MVCP....和MVP负责业务逻辑Presenter不同,VIPERPresenter主要工作是在View和Interactor之间传递事件, 并管理一些View展示逻辑,主要业务逻辑实现代码都放在了Interactor...总结 在简单了解了几种架构模式,对于那些让你困惑问题,希望你已经找到了答案。但是本文可能也存在错误之处,或者不足之处,希望大家看到有问题地方在下方留言一起谈论学习,后续可能会持续更新更正本文。...参考文章: 设计框架(MVC、MVP、MVVM、VIPER演化说明总结 iOS VIPER架构实践(一):从MVC到MVVM到VIPER 深入分析MVC、MVP、MVVM、VIPER 浅谈开发

4.2K21

架构之路 (五) —— VIPER架构模式(一)

下面看下写作环境 Swift 5, iOS 13, Xcode 11 接着就是正文了。 VIPER架构模式是MVC或MVVM另一种选择。...VIPER为这种情况提供了一种替代方案,可以与SwiftUI和Combine结合使用,帮助构建具有清晰架构应用程序,该架构有效地分离了所需不同功能和职责,如用户界面、业务逻辑、数据存储和网络。...在Entities组,您将看到与数据模型相关类。Trip和Waypoint稍后将作为VIPER架构Entities。因此,它们只保存数据,不包含任何功能逻辑。...MVC (Model-View-Controller)是2010年iOS应用程序架构中最常使用模式。...控制器Controller因视图逻辑业务逻辑而膨胀。 MVVM是一种流行体系结构,在View Model它将视图逻辑业务逻辑分离开来。视图模型与模型Model交互。

17.5K10
  • 唯一可行 iOS 架构

    MVC,MVP,VIPER,RIBLET,Clean Swift等。这样文章有很多,它们观点和架构截然不同。 我们社区一直在争论哪种“模式”是最好。但是问题是他们全都是狗屎。...我们将真正深入在这些架构,并会发现我们犯主要错误。 如果告诉您,iOS 只有一种可能架构模式,甚至没有任何模式?你会怎么想呢?...“Interactor 是包含业务逻辑类”。这有助于我们理解代码吗?它包含哪些业务逻辑?如果有很多业务逻辑怎么办?...它甚至都不是 OOP,认为这是具有 5 个文件过程编程。 认为,VIPER 是一个很大错误。VIPER 证明我们还不了解 MVC。建议是忘记 VIPER,不要讨论它。...这个逻辑应该在 UIViewController 吗?如果存在很多复杂表示逻辑怎么办?除了复杂性之外,还存在测试问题。测试 UIViewController 类并不容易。

    1.3K20

    架构之路 (二) —— APP架构分析(一)

    回顾 上一篇主要讲述了苹果原生iOS框架架构,这一篇我们就说一下如果自己要完成一个APP,需要如何去设计架构。...ViewModel专门做“显示逻辑”,并且用属性观察者做绑定,必要时候用Notification。 在Swift,ViewModel和Model推荐用Struct;Logic倾向于用class。...增加Logic类,负责业务逻辑,比如从网络取数据,修改数据库,检查用户名合法性,具体响应逻辑,监听后具体处理等等。 3. VIPER 任务均摊 – 毫无疑问,VIPER是任务划分佼佼者。...VIPER View: 也是View + Controller Present:相当于ViewModel,叫展示器 Interactor:交互器,侧重于业务逻辑;从网络取数据,数据库等功能都在这里...Entity:就是Model,仅仅是数据定义 WireFrame:就是Router,是页面跳转 参考文章 1. iOS应用架构谈 开篇 2.

    2.1K10

    iOS架构设计:揭秘MVC, MVP, MVVM以及VIPER

    ,这将会加载所有的View) 情况下测试UIView显示逻辑(虽然在上面的例子没有太多这样逻辑)。...可测性 — 非常好,基于一个功能简单View层,可以测试大多数业务逻辑 易用性 — 在我们上边不切实际简单例子,代码量是MVC模式2倍,但同时MVP概念却非常清晰。...绑定 在MVP部分已经提到这点了,但是在这里我们来继续讨论。 绑定是从OS X开发衍生出来,但是我们没有在iOS开发中使用它们。当然我们有KVO通知,但它们没有绑定方便。...VIPER 把LEGO架构经验迁移到iOS app设计 VIPER是我们最后要介绍,由于不是来自于MV(X)系列,它具备一定趣味性。 到目前为止,你必须同意划分责任粒度是很好选择。...VIPER在责任划分层面进行了迭代,VIPER分为五个层次: 交互器(Interactor) — 包括关于数据和网络请求业务逻辑,例如创建一个实体(Entities),或者从服务器获取一些数据。

    1.4K20

    iOS应用架构谈 view层组织和调用方案 pragma mark - life cyclepragma mark - life cyclepragma mark - getters and set

    制定View层规范重要性在于: 提高业务方View层可读性可维护性 防止业务代码对架构产生腐蚀 确保传承 保持架构发展方向不轻易被不合理意见所左右 在这一节里面不打算从头开始定义一套规范...如果你还有点疑惑,请看下面来详细讲一下原因。 为什么使用了派生,业务使用成本会提升? 其实不光是业务使用成本,架构维护成本也会上升。那么具体成本都来自于哪里呢?...也是这样,在进安居客之前,也是做服务端开发,在学习iOS过程也曾经对iOS领域MVC划分问题产生过疑惑,疑惑点就是前面开篇猜测点。...如果有人问我iOS应该怎么做MVC划分,就会像上面这么回答。 MVCS 苹果自身就采用是这种架构思路,从名字也能看出,也是基于MVC衍生出来一套架构。...如果各位读者有谁在实际App采用VIPER架构或者对VIPER很有兴趣,可以评论区里面提出来,我们交流一下。 本门心法 重剑无锋,大巧不工。

    96480

    学习苹果iOS手机开发App准备

    Python、Java、C++等语言基础知识都有助于学习Swift语言。 Swift语言:这是iOS开发首选语言。...资源和学习材料 官方文档:苹果提供详细开发者文档,涵盖了从Swift语言到iOS框架方方面面。...开源项目:参与一些开源项目或查看别人代码,以此增长见识和经验。 6. 深入学习 架构模式:学习常见iOS应用架构,如MVC、MVVM和VIPER。...实时了解行业动态 订阅博客和播客:如Ray Wenderlich、iOS Dev Weekly、Swift by Sundell等,有助于在学习过程获取最新资讯和技巧。...阅读技术文章:Medium、Dev.to 以及各类技术博客上有许多iOS开发相关文章和教程。 通过系统地学习和持续实践,不仅能掌握iOS开发核心技能,还能应对开发过程遇到各种挑战。

    8610

    浅谈iOS架构技能栈

    .需要读者自己使用百度进行拓展学习. 4.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程,有什么遗漏或错误还望各位指出. 5.觉得哪里不妥请在评论留下建议~ 6.觉得还行的话就点个小心心鼓励下吧...~ ---- 目录 1.技能栈路线 2.iOS架构说 3.大、、小公司区别 4.架构师思想 ---- 为什么又会开一篇文章,而且又是大致一样标题,因为觉得这是不同层面的问题,不同层面的文章,上一篇可以说是掌握一些知识分享...设计模式、接口设计、架构模式 设计模式是指,在实现业务逻辑时,代码逻辑目标和实现模式,例如:MVP,MVVM,MVC等....、、小型公司区别 你会发现,随着你就业公司规模变化,你进入公司越大越知名,其公司内部规范,要求,架构都会越来越成熟,逻辑性更明确,业务逻辑针对性更强....如果你只是单纯使用语言完成业务需求,只思考自己业务栈,那便是码农.但如果你去思考,怎么用,为什么用,怎么组合更好,那便是架构师思想了.以整个项目的开发观念去看待自己个人业务逻辑如何实现,怎么实现更高效

    2.3K71

    iOS 面试策略之经验之谈-架构选择

    架构确保了日后开发可以轻松应对各种新需求;即使是新人也可以快速学习并适应现有的架构并进行开发。 本节将围绕目前流行 MVC,MVP,MVCS,MVVM,VIPER架构来展开。...相比于 ViewController 庞大代码,Model 层只是定义几个属性。在 Objective-C “.m” 实现文件,更是几乎看不到代码。 网络请求逻辑无从安放。...也就是说,View 层不包含任何业务逻辑代码,它只会将交互交给 Presenter,并从 Presenter 那里接受结果来更新自己。...而 MVP Presenter 则负责业务逻辑,它是 View 和 Model 桥接。它会根据 View 交互去修改 Model,或根据 Model 变化去修改 View。...文章到这里就结束了,感谢你观看,只是有些话想对读者们说说: iOS开发人群越来越少,说实在,每次在后台看到一些读者回应都觉得很欣慰,至少你们依然坚守iOS技术岗…为了感谢读者们,想把收藏一些编程干货贡献给大家

    1K30

    打造完备iOS组件化方案:如何面向接口进行模块解耦?

    作者 | 黑超熊猫zuik,一个修行 iOS 开发,喜欢搞点别人没搞过东西,钻研过逆向工程、VIPER 架构和组件化。...关于组件化探讨已经有不少了,在之前文章 iOS VIPER架构实践(三):面向接口路由设计[1] ,综合比较了各种方案后,倾向于使用面向接口方式进行组件化。...Swift:条件扩展 Swift 不支持宏定义,也不能随意进行类型转换,因此需要换一种方式来进行编译检查。...Swift 没有直接提供class_conformsToProtocol这样函数,不过我们可以通过 Swift Runtime 提供标准函数和 Swift ABI 定义内存结构,完成同样功能...例如 MVVM 和 VIPER 架构,model 参数不能传给 view,而是应该交给 view model 或者 interactor。此时可以使用相同模式。

    7.6K43

    浅谈iOS进阶路线

    . 4.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程,有什么遗漏或错误还望各位指出. 5.觉得哪里不妥请在评论留下建议~ 6.觉得还行的话就点个小心心鼓励下吧~ ---- 目录 1....,如果是在进行iOS进阶过程中会去学习知识点....当有新业务需求提出时,根据自己实力,给出不同业务方案. 购物车 购物车可以说是在各个客户端,最经典案例了,这是一个业务需求,也是涉及到增删改查,异步处理等各种业务逻辑混杂于一身业务需求....、NSThread各种灵活运用和嵌套 ---- iOS架构 & 代码规范 iOS应用架构谈-By.Casa大 可以仔细学习这篇文章,养成良好代码规范. ---- 苹果官方Kit ARKit....例如,客户端和服务器概念,SSH登录,以及各大有名APP是如何架构(推理一下). ---- iOS Swift Swift目前已经4.0了,个人感觉本人会在Swift5.0进行学习吧,虽然很多项目没有用到

    2.1K120

    今日头条:iOS 架构设计杂谈

    阅读字数:2842 | 8分钟阅读 摘要 本次分享将探讨iOS架构设计,讲解工程设计6大原则,通过一个简单登陆界面,一步步分析开发MVVM框架应用。...目前开发团队的人员越来越多,应用运营起来之后业务需求和功能需求日益增长,在没有良好架构设计情况下,维护起来会越发困难,因此架构设计是应用开发不得不思考问题。...MVVM案例 iOS MVVM实现方案 MVVM中最令我兴奋是有ViewModel这个角色,因为ViewModel比苹果MVC设计Controller更小,同时又能处理业务逻辑,当业务逻辑拆分足够小和分散时候...经过这样设计整个App层级结构已经初步成型,最底层是App功能,在此之上是App通用业务层,这块提供可以相互使用组件、模块。再往上iOS通用层其实很多东西在iOS其他开发上都能够用到。...整个过程MVVM指导了UI与业务逻辑组件拆分,UI与业务逻辑解耦使得不同APP间登录功能有共用组件,通过丰富iOS通用层组件使绑定、网络请求、数据反序列化变得更容易实现。

    1.7K30

    iOS 组件化之路由设计思路分析

    前言 随着用户需求越来越多,对App用户体验也变要求越来越高。为了更好应对各种需求,开发人员从软件工程角度,将App架构由原来简单MVC变成MVVM,VIPER等复杂架构。...通过改进VIPER架构,吸收其优秀特点,改进其缺点,就形成了Uber 骑手App全新架构——Riblets(肋骨)。 ?...在这个新架构,即使是相似的逻辑也会被区分成很小很小,相互独立,可以单独进行测试组件。每个组件都有非常明确用途。...通过一个Riblets(肋骨)进一步抽象业务逻辑和视图逻辑。 ? 一个Riblets(肋骨)被设计成这样,那和之前VIPER和MVC有什么区别呢?最大区别在路由上面。...总之,在业务没有完全固定下来之前,组件划分可能一直进行时。 六. 最好方案 ? 关于架构觉得抛开业务架构是没有意义。因为架构是为了业务服务,空谈架构只是一种理想状态。

    2.6K60

    iOS 组件化 —— 路由设计思路分析

    前言 随着用户需求越来越多,对App用户体验也变要求越来越高。为了更好应对各种需求,开发人员从软件工程角度,将App架构由原来简单MVC变成MVVM,VIPER等复杂架构。...通过改进VIPER架构,吸收其优秀特点,改进其缺点,就形成了Uber 骑手App全新架构——Riblets(肋骨)。 ?...在这个新架构,即使是相似的逻辑也会被区分成很小很小,相互独立,可以单独进行测试组件。每个组件都有非常明确用途。...通过一个Riblets(肋骨)进一步抽象业务逻辑和视图逻辑。 ? 一个Riblets(肋骨)被设计成这样,那和之前VIPER和MVC有什么区别呢?最大区别在路由上面。...总之,在业务没有完全固定下来之前,组件划分可能一直进行时。 六. 最好方案 关于架构觉得抛开业务架构是没有意义。因为架构是为了业务服务,空谈架构只是一种理想状态。

    1K30

    初学go,实现vue3前后端分离,放弃了.....

    go后端正如JavaSpringboot、pythonDjango,这里使用是gogin框架来构建后台,先来构建后台功能模块。...controller:后端控制器,负责处理请求和业务逻辑model:存放放后端模型,负责定义数据结构、数据库操作database:用于初始化数据库连接和定义数据库操作函数router:使用 Gin 框架提供方法来定义路由...在对应路由处理函数,再调用业务逻辑处理函数或者操作数据库等config:用来定义数据库连接信息等配置前端后端分离替代了MVC架构view,所以这里就没有view模块,除了上面五个目录,还可以定义...github.com/spf13/viperviper用来解析各种格式配置文件,GORM 是一个流行 Go 语言 ORM(对象关系映射)库,直白说就是讲数据库表结构和代码类(结构体)映射起来...结果如下:src下目录是用于开发目录,assets用来存放静态文件,components是自定一些组件,例如在BuildAdmin写过Icon组件,router就是来定义vue-router

    89810

    如何写出一手好小程序代码,从架构说起

    但是,有个限制是 Android 端比较自由,通过 V8 提供 plugin 机制可以这么做,而 IOS 上,苹果爸爸是不允许,除非你用IOS 原生组件,这样的话就会扯到同层渲染这个逻辑。...主要原因有: · IOS 和 Android 对于 webview 渲染逻辑不同 · 手机上性能瓶颈,JS 原始不适合高性能计算 · video 等特殊元素上不能被其他 div 覆盖 · …… 一开始做小程序双线程架构和开发者工具比较类似...大体内容可以参考这张架构图: 当然,除了正常执行逻辑上述是三个架构体外,还有提供接口协议架构。...所以,这里通信架构其实就变为: Native Layer 在 Native ,可以通过一些手段能够在内核设置 proxy,能很好捕获用户在 UI 界面上触发事件,这里由于涉及太深原生知识,就不过多介绍了...丰富场景化DEMO 将实时音视频融入到各业务场景,提供不同业务场景Demo,帮助用户高效完成小程序开发。

    1.9K20

    在Uber亲历最严重工程灾难

    再加上团队提倡“让开发者放手去干”理念,我们应用架构变得既复杂又脆弱。Uber 当时非常注重客户端逻辑,所以应用程序会出现很多问题。我们一直在做热修复,不断发布版本,设计扩展性也变得很差。...架构团队希望在 Android 和 iOS 这两个平台上使用相同架构模式。Android 团队都是 RxJava 忠实粉丝,而 Swift 也有一个支持函数式编程 RxSwift 库。...iOS 9 引入了新架构,可以把大小降到原来一半。因为留给我们时间只有一周了,所以我们决定放弃支持 iOS 8。...问题持续存在和缓慢开发环境在 Uber iOS 工程师形成了两个敌对派别,称它们为“Swift 狂热派”和“Objective-C 顽固派”。外部压力和内部派系斗争让气氛变得高度紧张。...社区也从我们经历受益。Ellie 做了一个很棒演示,并通过巡回演讲来分享我们经验。经验去教其他团队如何做出更好决策。

    64620

    Rust 移动开发与跨平台模式探究

    分层架构:遵循“关注点分离”原则来进行上下分层,将属于业务逻辑关注点放到领域层(Domain Layer),而将支撑业务逻辑技术实现放到基础设施层(Infrastructure Layer)。...内部代表了应用业务逻辑,外部代表应用驱动逻辑、基础设施和其他诸如UI/DB 等层,这样更加清晰地勾勒出业务逻辑与技术实现边界,且将业务逻辑放在了架构核心位置。...体现业务逻辑应用层与领域层处于六边形架构内核,并通过内部六边形边界与基础设施模块隔离开。在进行软件开发时,只要恪守架构六边形边界,就不会让技术实现复杂度污染到业务逻辑,保证了领域整洁。...领域层:代表业务,管理业务状态或委托给基础设施层。不依赖于任何其他层。 数据组件:负责数据相关逻辑,按 DDD 分层架构是基础设施层。基于 Rust 来实现。 支持更高层通用技术能力。...Repository 定义了实现其业务需求接口和数据模型。数据模型使用 Rust 中生成protobuf来描述数据模型。

    3.2K50

    【技术创作101训练营】如何从Objective-C转向Swift开发

    如何从Objective-C 转向Swift开发.pptx 如何从Objective-C转向Swift开发 自我介绍 大家好,是筑梦师Winston,是一名iOS开发者,已经从事iOS开发将近五年了...iOS开发就业趋势 每年毕业本科生和研究生越来越多,他们往往在学校会学习一些C、C++、C#这种语言,然后去大厂实习时,由公司安排岗位,如果现在被安排到iOS岗位,一般都会让实习生去推进Swift项目...面试官过来又问我:请问你会Swift吗,还没有进行这方面的学习,因为那时候可能才是Swift 2和3,听说ABI不稳定就没有急切进行学习,于是,在这场觉得发挥非常稳定面试,因为不会Swift...试着用更高级项目架构进行重构 OC老项目的结构和目录势必是臃肿,为何不用我们新学Swift重构一遍呢,不仅能够快速提高Swift代码书写能力,还能够完成我们工作KPI。...Swift能给我们带来什么好处 对开发语言新认识 当你掌握一门以上开发语言以后,你会发现,你对整个世界看法都会有所改变,从最基本业务逻辑,到事业观、爱情观,再到大世界观、人生观、价值观,都会有所改变

    1.5K42
    领券