寻求建议 - 我应该如何将Facebook SDK整合到Android中的Clean Architecture中?

时间:2017-11-14 06:16:34

标签: android facebook-graph-api clean-architecture

我在我当前的项目中使用Clean Architecture。现在我想集成一个请求Facebook SDK执行登录的功能。

我认为,Facebook SDK充当数据提供者(提供身份验证服务,类似于其他Restful登录API),应该在data模块而不是app模块下进行设置和使用。例如,如果我想执行Facebook登录,我将调用适当的用例,然后这样的用例将调用data模块来进行实际工作。

但是,挑战是Facebook方法(参见Facebook的LoginManager,Here),要求运行Activity / Fragment实例。

那么,我应该将Facebook SDK移回app模块还是将Activity实例传递给storage模块?

我真的不喜欢他们的任何选择。 (尽管它有助于解决要求但感到不高兴)。有没有人有更好的方法? 感谢

1 个答案:

答案 0 :(得分:0)

为了严格遵循干净的架构,你必须保留所有框架的内部圈子(app模块)。这包括Facebook SDK以及Android本身。

从Clean Architecture中的业务规则访问框架的常用方法是通过抽象。

在您的使用案例中,我建议如下:

  • 在app模块中创建IActivity接口以抽象活动/片段
  • 在app模块中创建ILoginManager,它采用IActivity
  • 创建AndroidActivity,在框架层实现IActivity
  • 创建在框架层
  • 中实现ILoginManager的FacebookLoginManager 调用用例时,来自ur android活动的
  • 将活动作为IActivity传递,将FacebookLoginManager作为ILoginManager传递
  • 然后FacebookLoginManager必须将IActivity转换回android活动并将其从Facebook SDK传递给LoginManager

这种方法会为你的项目添加更多的类和接口,但也明确区分关注点和依赖项。