利用 ARouter进行业务架构解耦

底层组件在完成后,余下的就是业务架构之路了,让业务之间松耦合,高内聚。

github源码地址

本Demo中实现了以下功能:

开发了一个Demo,用于多模块业务的开发以及数据通讯和传递,通过ARouter,可以实现模块间解藕,独立。

  • 增加了 shopcartMoudle和productMoudle以及openserviceMoudle三个模块,详见下图


    利用 ARouter进行业务架构解耦_第1张图片
    增加了三个模块

    然后通过App中的点击事件路由到产品和购物车页面。


    利用 ARouter进行业务架构解耦_第2张图片
    App中的路由模块
  • openServiceMoudle 主要用于模块间数据传递,比如:购物车要获取产品的的一些详细信息,但又不能直接依赖产品模块。


    利用 ARouter进行业务架构解耦_第3张图片
    Service Moudle
  • shopcartMoudle 功能:
    • 跨Moudle调用了ProductMoudle中的ProductService,获得了相应的产品信息
    • 跨Moudle调用了ProductMoudle中的ProductFragment,并传递相应的参数,显示相应的Fragment界面。


      利用 ARouter进行业务架构解耦_第4张图片
      购物车模块的功能
  • productMoudle功能
    • 通过ARouter调起 购物车模块页面功能。


      利用 ARouter进行业务架构解耦_第5张图片
      产品模块功能

      设计思想见下图:


      利用 ARouter进行业务架构解耦_第6张图片
      设计思想

ARouter核心实现

  • 利用运行时注解生成的路径和具体Class的绑定关系。放到ARouter的索引中。


    利用 ARouter进行业务架构解耦_第7张图片
    注解生成的类
  • 然后执行执行跳转时,选从索引中查找实现类,找到实现类后,再执行navigation操作。


    利用 ARouter进行业务架构解耦_第8张图片
    跳转类
  • 被跳转的类,根据Type的不同,执行的操作也不同,如activity的话,就直接用startActivity,如果是Fragment,直接newInstance(),如果是Service相关,直接通过获取就可以了。


    利用 ARouter进行业务架构解耦_第9张图片
    根据类型不同,去实现

所以总体而言,ARouter 建立了路径对应的实体类的一个映射关系,在具体调用的时,根据不同的类型,执行了不同的Action。

欢迎关注作者微信公众号,及时获得作者更新:

利用 ARouter进行业务架构解耦_第10张图片
微信公众号

另外还建立了小密圈:圈主 和 嘉宾 都就职于 阿里巴巴 的顶尖开发者,开发的app被Google 编辑推荐,对性能,架构,图片,MD设计都有研究和深入,欢迎大家加入,提升自己,一起进步,互相帮助交流!

利用 ARouter进行业务架构解耦_第11张图片
微信公众号

你可能感兴趣的:(利用 ARouter进行业务架构解耦)