iOS开发项目架构浅谈:iOS架构设计与分层

本文探讨了iOS开发中结构设计的层次是否越多越好,引用知名架构师的观点,提出架构拆分应尽可能细化。作者介绍了一种自创的VPBD架构模式,详细解释了ViewController、ViewModel、Presenter、Business、DataSource等各层职责,并分享了实践该模式的经验,通过实例简化了ViewController的复杂性。
摘要由CSDN通过智能技术生成

结构设计的层次是否越多越好?

多人都会说,凡事不能走极端,走了极端就过犹不及。所以应该分层,但不能过分分层,应该视具体情况来定。这样的话听起来很有道理,却只是一句废话。当我们遇到问题时,还是摸不着头脑!

看看知名的架构师是怎么说的吧!来自蔡学镛

我做(开发)架构的几个原则,根据优先次序高低排列:1. (逻辑)拆分越细越好 2. 依赖关细越少越好 3. 交互越少越好 ... 相互矛盾时,如果没有特殊理由,以优先权高者胜出。

由此启发,我觉得设计架构应该拆的越细越好。这样做有如下几点好处:

  • 对于大中型软件,层次越多,每一层就更单纯,更容易维护。
  • 团队成员只需了解一小部分业务,就能顺利进行开发。
  • 相对底层的模块,可以更好的重用。
  • 层次分的越多,开发者对抽象的理解就更深入。

iOS说到分层,有几种常见的做法。

  • 按功能分:有MVC,MVVM......
  • 按层次分:有数据层、逻辑层、展现层......

这些分层看起来五花八门,但实质并不冲突。最近读了一篇文章,深受启发,在其模式的基

项目中的分层主要包含四个模块,Main(主要)、Expand(扩展)、Resource(资源)、Vender(第三方),还有本项目是有多个Tag,用于区分不同的版本,比如本地环境测试版、产品版,主要是通过Tag来区分,不同的标识对应不同的连接地址;当然也可以设置其它不同的内容; 2.1 Main(主要)模块的内容 此模块主要目的是为了存放项目的页面内容,比如MVC的内容,Base(基类)用于存放一些公共的内容,其它功能模块的提取,方便继承调用;在本实例中已经在BaseController整理的一个公用的ViewController 2.2 Expand(扩展)模块的内容 此模块主要包含Const、Macros、Tool、NetWork、Category、DataBase六个子模块; 2.2.1 Macros(宏)主要存放宏定义的地方,这边有两个宏文件,Macros.h主要是项目的一些主要宏,比如字体、版本、色值等,而ThirdMacros.h主要用于存放一些第三放SDK的key值; 2.2.2 Tool(工具类)主要存放一些常用的类,此处Logger用于存放日志的封装帮助类,Reachability用于存放判断网络状态的帮助类; 2.2.3 Network(网络)这边主要用到YTKNetwork 是猿题库 iOS 研发团队基于 AFNetworking 封装的 iOS 网络库,这边是对它进行一些修改,为了满足不同Tag及不同的功能模块可能访问不同URL的要求; 2.2.4 Category(分类)主要用到Git上面iOS-Categories分类的内容,多创建一个Other用于存放平时要扩展的分类; 2.3 Resource(资源)模块的内容 资源模块主要包含三方面,Global(全局)、Image(图片)、Plist(配置文件); 2.3.1 Global用于存放项目一些全局的内容,包含启动项的内容LaunchScreen.storyboard、头部引用PrefixHeader.pch、语言包File.strings 2.3.2 Image用于存放图片资源,可以根据功能模块进行再分不同的xcassets文件; 2.3.3 Plist用于存放plist文件,主要是本项目中会创建多个的Tag,而每个Tag都会有自个的plist文件进行管理,所以统一存放方便管理; 2.4 Vender(第三方)模块的内容 虽然项目中已经用Pod来管理第三方插件,但对于一些可能要进行修改的第三方可以存放在这边,本实例中引用的几个比较常用的第三方插件,简单介绍其中的几个,GVUserDefaults是对UserDefaults的封装,简单就可以用于存取操作;JDStatusBarNotification是在状态栏提示效果的插件;ActionSheetPicker底部弹出如时间选择、选项的插件;QBImagePickerController是照片选择插件,支持多选并可以设置最多选择张数; 源代码已放(欢迎一起完善)Github:https://github.com/wujunyang/MobileProject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值