Android模块:从SLF4J说起

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ddnosh/article/details/84638743

现状

Android的模块包括网络、数据库、图片、日志、解析等等。
通常我们使用这些模块的方法,要们自己封装一套,提供外接调用的方法;要么引入第三方的library,直接调用。
大部分时候在一个项目里面这么操作好像也没什么问题,而且大家已经习以为常了。
其实如果按照OOP的编程规范来说,我们应该遵循开闭原则,也就是对修改关闭,对扩展开放。而回过头来看,我们直接使用了特定模块提供的方法,也就是API接口。这样我们的项目就跟这个模块强耦合了。什么意思呢,如果哪天我们找到了一个更好的模块,想用来替代现有的模块,那我们是不是要重新将旧的API替换成新的API呢?这样不但会增大替换所带来的工作量,也会增加app修改所带来的风险。

目标

我们期望的是,如果新接入一套模块,那么我们原先的工程可以不用更改,只需要在配置文件里面修改配置,切换到目标模块即可。这有点类似于以前开发Spring的时候,通过配置文件切换不同的数据库一样。

SLF4J

为了便于大家理解,这里我们介绍一套已经实现了这样解耦方式的框架:SLF4J
官网地址:https://www.slf4j.org
大家有兴趣可以去官网仔细看看它的介绍。
在这里插入图片描述
SLF4J提供三套Log模块供切换:log4j 、jdk14、Simple
而且我们只需要在pom.xml里面配置不同的log模块即可,客户端无需更改调用方式,达到一键切换模块的目的。

示例

新建一个Maven工程,然后在pom.xml切换不同的log模块。

  1. log4j
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  2. jdk14
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

demo下载

https://github.com/ddnosh/demo_slf4j

猜你喜欢

转载自blog.csdn.net/ddnosh/article/details/84638743