-
支持swift5.0及以上
-
支持iOS10.0,OSX10.12及以上
-
仅有2个swift文件,总代码量不到100行,支持轻松、自由的功能扩展
-
Rx常常与MVVM一起,让人印象深刻。Rx框架帮我们欢乐的实现了“a library for composing asynchronous and event-based programs by using observable sequences.”编程,让数据在管控的道路上,自由奔跑。but,当我们尝试让数据在不同模块之间流动时,就会意识到直接的Rx会导致混乱的情形,相互之间紧紧连接的问题。
-
于是,ABG来了。ABG规范模块之间采用协议注册服务,需求方采用协议注册action注册自己(target);
2.1. 需求方可以自由通过协议获取服务,pull方式得到服务方数据;
2.2. 服务方可以自由通过协议-action获取target,push方式将数据主动推给需求方;
2.3. 如果结合Rx,那么可以把模块间的数据流动也适配到Rx的函数式响应编程内,自由愉快的数据交互。
-
ABG超轻量级,因为它专注于提供服务注册、查找、返回,以及target注册、查找、返回功能,不涉及任何对象的创建,所以足够轻量。
3.1. 服务对象、target对象的实例化工作,留给各自模块自身,push、pull实现留给各个模块自身;
3.2. 框架提供的是push、pull机制的支持,只要注册服务、注册target,然后在各自模块中实现对应的逻辑即可。
如果每个家庭之间,都建一条直通的路,那将会变成什么样?画面感不要太强。
对应的,如果每个模块相互之间引用交互,画面感是不是也一样的强?
模块解耦,到底是在解什么?解的是:交互逻辑抽象化。具体包含3个方面:
-
交互API协议化;
-
交互数据规范化;
-
交互方式抽象化;
一句话概括就是:让模块各自独立(模块高内聚、模块间低耦合)。
模块A要的是模块B的服务,而不是B的实例;模块A要的是B的数据,而不是相互引用相互调用。基于此,中介者(中间件)出来了。ABG框架,做为中介者(中间件),提供注册机制,查找、返回功能。
-
通过自身的功能与机制,抽象了双方交互过程;
-
协议注册、查找、返回,协助双方进一步协议化、规范化交互过程;
-
规定最基础的交互上下文,让交互双方有一个基础的统一数据规范格式,又可以让服务方自由规定具体的业务数据格式。
这就是ABG做的事情。