组件化(一)组件化简介(基础概念)

一、概念

将一个单一工程的项目,分解成各个独立的组件;
然后按照某种方式 任意组成一个拥有完整业务逻辑的工程

可以理解为下图所示


E9AE92823AAF075D980F8D66B6981697.png

每个组件都可以单独抽离出来独立运行
这就是组件的概念

二、组件化产生的原因

如果你的项目 业务模块比较多 而且同时有很多人开发 在开发过程中肯定会出现一些问题 比如

1、代码耦合度很高
//团队成员 方法相互引用

2、编译效率低速度慢 
//因为工程模块比较多编译时每个模块都会参与

3、测试不独立
//你写的代码测出来问题 有可能不是你的问题 可能是其他开发人员的问题导致(测试环境复杂)

4、无法使用自己擅长的设计模式
//一个项目多人开发 如果所有代码都在一起 肯定会有一个统一的设计模式  不然项目会很乱 

。。。。

反正就是 项目业务比较复杂时 多人开发会暴露出一系列的问题。
此时 如果每个人都负责编写一个独立的组件 就不会出现上述问题

三、组件化最终效果

1、组件独立

独立编写 :可以使用自己擅长的方式别写代码
独立编译 :速度快
独立运行 :速度快
独立测试 :定位问题快 省去重复测试

2、一次封装永久使用

如果你的其他项目中想要使用这个组件 直接引用即可

四、组件化实战考虑的问题

1、需要把哪些内容封装成一个组件

一般分为三种 基础组件、功能组件、业务组件

基础组件
1、基本配置:如常量/变量、宏定义
2、分类:系统各个类的分类
3、网络:如对AFN的封装、对SDWebImage的封装...
4、工具:如 日期处理工具、文件处理工具、设备信息获取工具...
...
功能组件
1、控件:如 轮播器、选项菜单、图文菜单、弹幕...
2、功能:如 断点续传、音频处理
...
业务组件
1、业务1
2、业务2
3、业务3
...
n、业务n

三者之间的关系
先看图


5894832B47D6ADE4C667E6221F9CD0CE.png
1、最上层肯定是业务组件 ,然后基础组件和功能组件同一级别
2、业务组件 可以依赖基础组件 也可以依赖 功能组件
3、业务组件之间最好不要相互依赖 
原因是:降低业务组件之间的依赖 能够方便的抽离出 各个组件  来达到解耦的目的
4、基础组件和功能组件 最好也不要相互依赖 
原因是:降低业务组件之间的依赖 能够方便的抽离出 各个组件  来达到解耦的目的

假设 功能组件  有一个小小的功能需要使用 基础组件 那么他就需要去依赖(引用) 基础组件
这样一搞 在编译的时候就会把基础组件的所有小的组件给引用到功能组件中 
在编译的时候基础组件就会全部被编译

还有就是 功能组件依赖基础组件 将来再抽离功能组件的时候就无法单独把功能组件抽离出来

解决这个问题  就是把功能组件里需要的基础功能 从基础组件中拷贝一份过来,虽然这样麻烦了一些 但是能够达到解耦的效果。

2、每个组件以什么样的形式存在

1、组件内部根据个人喜好划分命名文件夹
2、每个组件都以pod库的形式存在
3、拥有单独的测试工程 每个组件可以单独测试

3、以怎样的形式集成各个组件

通过cocoapods来安转各个组件

4、组件之间如何通讯

1、披露公开API
2、利用中间件 传递

五、组件化过程中的解耦

1、如果一个组件中依赖其他公共功能 该如何处理

1、直接copy代码,虽然麻烦,但是他的好处就是快,无需产生依赖,
对于一些不重要的方法和工具也可以直接copy到内部使用

2、把组件依赖的代码 封装成一个pod库 然后依赖pod库

2、组件内部需要对接某个服务 该如何处理

如:图文菜单组件的封装 内部有图文加载
可以使用一个代理 或则block 把显示图片的代码丢出去 让外界来做处理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 目录介绍 1.0.0.1 说下Activity的生命周期?屏幕旋转时生命周期?异常条件会调用什么方法? 1.0.0...
    杨充211阅读 603评论 0 2
  • 组件:指的是单一的功能组件,如视频组件(VideoSDK)、支付组件(PaySDK)、路由组件(Router)等。...
    秀叶寒冬阅读 269评论 0 4
  • 原文地址:iOS 组件化方案 摘要:最近在思考团队扩张及项目数量增加的情况下,如何持续保障团队高效产出的问题,很自...
    prettystony阅读 198评论 0 0
  • 去年就开始做组件化,没啥活,就自己找的活儿,一套视频看下来,理论知识有了,但是对着自家的项目,却还是无从下手,所以...
    小如99阅读 410评论 0 1
  • (一)概念 将一个单一工程的项目,分解成为各个独立的组件,然后按照某种方式,任意组织成一个拥有完整业务逻辑的工具 ...
    沈正方阅读 524评论 0 1