iOS 模块化解耦方案 DecouplingKit

码农软件 · 软件分类 · 其他开发相关 · 2019-10-17 16:42:13

软件介绍

Podfile

    平台:IOS,' 7.0 ' 
    荚' DecouplingKit ','〜> 0.0.2 '

DecouplingKit是一个用于模块之间解耦的方案。

当应用团队的人数增长到一定人数之后会分出业务线,这样就会就行模块化工作来隔离开各个业务线,以便让每个团队能够独立工作。通用的方案是采用cocoapods把业务代码分别到到各个仓库,一个业务线就是一个业务仓库,当然如果更大拆分力度的话,一个小模块就是一个cocoapods仓库。这样就对业务线就进行了物理路径的隔离,各个业务线就不能随便调用其他业务线的代码。不过对于一定要调用的话还是可以引入头文件来调用,所以本质上来讲根本没有解除各个业务仓库之间的耦合。

解除耦合其中一部分是业务线页面之间的跳转,现在流行的方案是通过路由器做。另外一部分很容易忽略就是业务线之间调用方法,属性等,所以就有了DecouplingKit这个中间层来解决这个问题.DecouplingKit之后的业务逻辑可以看下图。

DecouplingKit只有一个类DKServiceManager,用来加载服务列表DKService.plist,服务就是一个业务中类协议,里面有其他业务需要调用的方法,属性等.DKService.plist里面每一项有service和impl,service对于protocol,impl就是实现协议的类。

比如业务1需要调用业务2的方法,只需要DKServiceManager通过协议来找到对应业务2中的impl就可以了。其中协议会集中放在BussinessPublicService仓库,这里不依赖任何仓库,协议里面的方法对于入参和返回值都通过UIKit,Foundation等系统框架中类型,不需要自己的模型类。对于业务2的实现类只要实现对应的方法就好。

DKServiceManager既可以返回实例,也可以返回类方法,当然对于你如果实现了父协议DKServiceProtocol的sharedInstance方法,也可以返回单例。

DecouplingKit是基于BeeHive改造的,BeeHive包括AppDelegate管理和模块调用解耦两部分,DecouplingKit专注于模块调用解耦这部分,DecouplingKit只有一个类比BeeHive轻量,支持调用实例和类方法,属性。的另一种方式就是通过运行时来做,例如CTMediator,通过一个中间层(对应BussinessPublicService)来公布对应的接口,接口调用CTMediator(runtime)来实现,这也是一种非常好的方案。

本文地址:https://www.codercto.com/soft/d/16967.html

看见未来

看见未来

余晨 / 浙江大学出版社 / 2015-4-15 / 59.00元

【内容简介】 这是互联网群星闪耀的时代,巨人们用最尖端的技术和自成体系的哲学改变着我们的生活,甚至影响了整个世界和人类的历史进程。在这个时代,没有人可以避开互联网的渗透。互联网早已不是简单的技术变革,人们正试图赋予其精神和内涵,以期互联网能更好地为人类所用。 本书中作者 面对面地采访了包括马克·扎克伯格、埃隆·马斯克、杨致远、凯文·凯利、克里斯·安德森、罗伯特·希勒、迈克尔·莫瑞茨、凯......一起来看看 《看见未来》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试