iOS简单又直接的傻瓜式组件化设计

先上代码
https://gitee.com/pkgogai/gydfoundation_public/tree/master/GYDModuleInterface
Code目录是代码,Demo目录是举例,Tests还没准备。
https://gitee.com/pkgogai/gydfoundation_public/tree/master/Help/模板
文件模板

前言

东西多了就要分类,代码也一样,多了就要分文件,分目录,分模块,分项目。这里就简单设计一下如何划分模块并可独立运行。至于可独立运行的好处就不用多说了。
关键点:实现简单,能独立运行。

接口代码结构

代码可以划分文件,并且每个文件独立编译。

假如A和B是不同的文件,B文件中也要调用A文件中的代码,则可如下图所示,A.m文件和B.m文件互相没有引用关系,可以独立编译成.o。双方又可通过A.h约定的方法进行交互。


16248721935462.jpg

换成模块,简单的沿用这个结构。

依然假设A、B模块互相独立,但是B模块用到了A模块的功能。


16248756710613.jpg
  1. 接口层,为A模块定义协议,OC语言已经给我们设计好了,就叫protocol。
  2. A模块,按协议实现,定义一个类,遵守这个协议就好了。
  3. B模块,按协议调用。这里总得有个用来调用协议的对象,那就约定好类名,利用OC的运行时创建吧。

于是全部的代码是这样的

  • 接口层
    .h文件


    16249681718486.jpg

    .m文件


    16249681775289.jpg
  • A模块


    16248863019215.jpg
  • B模块


    16248863649169.jpg

用宏定义简写一下,完整版本的样子

16249387448630.jpg

再准备好文件模板,一次创建好4个文件(1对放在接口层,1对放在业务模块中)。这样为一个模块创建接口时只需关注2处:在接口层的XXXInterface.h中定义协议,在业务模块的XXXInterfaceDelegate.m中实现协议。


16249711054035.jpg

项目结构

配置文件

xcode项目有一个用来记录所有源文件目录结构的配置文件,那么模块分分合合,这个文件要随之变化,为了简单,这里用pod工具来管理。每个模块的源文件和资源文件放在一个目录,每个目录内创建一个podspec文件,作为一个pod库,项目的空工程放在一个单独的目录里,建立Podfile文件引用这些pod库。作为一个iOS开发者,如果不知道pod或者其它可以替代pod的工具,那么建议先自学一下。

仓库

这里使用git,不知道的话,建议先自学一下。如果公司内有多个部门的话,每个部门至少应该有1个仓库,部门内多个模块,可以分不同的仓库,也可以共用一个仓库以减少管理成本。
如果开发人数够多,可以像制作第三方库一样制作真正的独立模块库,通过pod远程引用。但我们为了简单,所有代码都放在本地进行引用。参考本文源代码。
git仓库间的关系,可以用子模块或子树,不知道的建议先自学一下。我选用了子模块,相对来说出现问题更容易解决。
我的个人仓库,结构是这样的:


16249539501825.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 何为组件化 一种能够解决代码耦合的技术。项目经过组件化的拆分,不仅可以解决代码耦合的问题,还可以增强代码的复用性,...
    StevenHu_Sir阅读 2,555评论 3 8
  • iOS之武功秘籍 文章汇总[https://www.jianshu.com/p/07991e5b1c30] 写在前...
    長茳阅读 2,374评论 4 30
  • 理论篇 什么是组件化 组件化开发就是将一个臃肿的、单一的项目,根据功能/业务/技术等等进行拆分,形成一个个独立的功...
    小白进城阅读 2,208评论 0 11
  • 前言 随着移动互联网的不断发展,很多程序代码量和业务越来越多,现有架构已经不适合公司业务的发展速度了,很多都面临着...
    AE86阅读 1,100评论 0 2
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,607评论 28 53