【iOS】浅谈App开发iOS端的架构设计

简介: 本文将要讲的架构设计可能没有那么真正的架构那么准确,可以理解为在创建App时项目的一个目录结构吧。做iOS开发3年,其实深刻的架构设计感觉还谈不上,主要是现在接手了一套架构比较牛的代码,然后回头看了一下自己之前的App架构,觉得豁然开朗了很多。

本文将要讲的架构设计可能没有那么真正的架构那么准确,可以理解为在创建App时项目的一个目录结构吧。
做iOS开发3年,其实深刻的架构设计感觉还谈不上,主要是现在接手了一套架构比较牛的代码,然后回头看了一下自己之前的App架构,觉得豁然开朗了很多。在这里主要总结分享一下我自己写过的比较渣的架构,希望大家以此为鉴!
第一份工作的第一个App,那个时候知道的架构也只有MVC模式,但是可能理解的也不是很透彻,写出来的项目结构如下图:
img_5f6aa0becb0d257ad0b7dac834d6eb30.png

那个时候刚开始写项目的时候觉得还可以,毕竟代码不是很多的时候还是很清晰的,就是ViewController里面有时候代码会很多。后来就把功能比较复杂的ViewController里面的视图抽出来写一个类,在对应的model中将数据处理好再给到ViewController。这样可以稍微减少一下ViewController中的代码,让代码可读性和可维护性提高。
随着项目功能的增多,这个架构的弊端也暴露的越来越多,找一个功能对应的代码也不好找。为了代码的可读性和后期维护,我又重新改了项目的结构,项目架构还是基于MVC,结构如下图:
img_8f0bd5e0a4922311198769e9e596b75d.png

修改后的结构,在刚刚改的时候,我觉得还是很好的。特别是与之前相比,感觉清晰了很多。当然这两种在一些人眼里都是很烂的,觉得好的可以参考参考用用看,觉得烂的欢迎留言交流好的架构,让我学习学习。第二种我觉得还是可取的,看上去也比较小清新,维护起来也不是很困难。但是看了现在的项目架构之后,我觉得第二种还需要优化的地方就是公用类,不宜写的太多。调用的时候确实是方便,但是这会让很多代码都有耦合,不符合代码应有的低耦合性。
现在的项目结构是基于MVP的,各模块都是以组件化的形式来开发的。页面的跳转用的是路由表的方法,每个ViewController会关联一个interactor,在interactor中处理数据和交互,每个interactor会关联一个adapter,在adapter中实现网络接口方法的调用。现在这个项目架构的优点在于解耦处理的很到位,跨模块的调用几乎没有,实在要跨模块操作的话基本都用了通知。不过个人觉得这样的架构比较适合大型项目,如果项目不是很大,用这个架构的话,会觉得很繁琐,特别是ViewController与interactor和adapter的关联,在看代码的时候要在各类间跳转,代码可读性不是很高。
我说它是基于MVP的原因是因为,大量的提供方法调用的类,比如网络请求的接口封装类,都是以协议的方式来开放接口的。这样可以更好的组件化,特别是需要将某一模块的功能独立出来封装成SDK时,可以以协议的方式开放外部调用的接口。
如果是新手的话建议用图二的架构,上手比较容易,可以把公用的工具类按照功能需要分别已类别或者子类的形式分散到各模块中,这样可以降低代码中的耦合性。至于第三种,感觉用起来还是挺复杂的,但是很符合代码的高内聚、低耦合,然后组件化处理的很到位,可以用在大型项目或者是要做成SDK的模块。

相关文章
|
5天前
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
47 11
|
2天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
8天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
52 6
|
9天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
38 3
|
7天前
|
前端开发 搜索推荐 安全
陪玩系统架构设计陪玩系统前后端开发,陪玩前端设计是如何让人眼前一亮的?
陪玩系统的架构设计、前后端开发及前端设计是构建吸引用户、功能完善的平台关键。架构需考虑用户需求、技术选型、安全性等,确保稳定性和扩展性。前端可选用React、Vue或Uniapp,后端用Spring Boot或Django,数据库结合MySQL和MongoDB。功能涵盖用户管理、陪玩者管理、订单处理、智能匹配与通讯。安全性方面采用SSL加密和定期漏洞扫描。前端设计注重美观、易用及个性化推荐,提升用户体验和平台粘性。
33 0
|
15天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
49 8
|
11天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
23天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
22天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
34 1
|
27天前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。