【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的模块。

相关文章
|
6天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
|
8天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
7天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
23 1
|
13天前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
11天前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
8天前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
25 1
|
9天前
|
负载均衡 监控 API
后端开发中的微服务架构实践与挑战
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势和面临的挑战,并通过案例分析提出了相应的解决策略。微服务架构以其高度的可扩展性和灵活性,成为现代软件开发的重要趋势。然而,它同时也带来了服务间通信、数据一致性等问题。通过实际案例的剖析,本文旨在为开发者提供有效的微服务实施指导,以优化系统性能和用户体验。
|
11天前
|
安全 Android开发 iOS开发
深入探索iOS与Android系统架构差异及其对开发者的影响
本文旨在通过对比分析iOS和Android两大移动操作系统的系统架构,探讨它们在设计理念、技术实现及开发者生态方面的差异。不同于常规摘要仅概述内容要点,本摘要将简要触及核心议题,为读者提供对两大平台架构特点的宏观理解,铺垫
|
12天前
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。
|
15天前
|
IDE 安全 Android开发
深入探索Android与iOS操作系统的架构差异
本文旨在对比分析Android和iOS两大主流移动操作系统在架构设计上的根本差异。通过详细解读两者的系统架构、开发环境、以及安全性等方面,揭示它们各自的特点及优势,为开发者选择合适的平台提供参考。