美文网首页
模块化方案(二)——介绍

模块化方案(二)——介绍

作者: Jamie0610 | 来源:发表于2017-04-10 15:35 被阅读0次

    spiny方案 vs 接口方案

    我们先看看这个spiny框架的思想和使用,先看下图:

    spiny.png

    模块化分组的时候,它其实是在我们之前那种分组的基础上,加上一个module,Router,这里就是注册模块,所有需要公共出来的方法、参数、函数等信息都需要注册到这个模块中,使用方需要在这个module中找到注册信息,然后再去找到相对应的实现中去。
    然后看一下另外的我们之前的方案的图

    早期架构-2.png

    这个spiny方案,所有module依赖的只有router,module之间的互相依赖都没有了。
    到此为止,我们来比较一下这两个方案吧!
    大家看之前方案的优缺点:

    1. 依赖接口,弱解耦
    2. 没有动态性
    3. 接口依赖,编译器检查
    4. 原生接口,学习开发障碍小

    前面也说过了,spiny方案要比接口方案耦合度更低。接口方案缺少动态性,而spinny这里面,只要我们注册的provider和action名字不变,里面如何改动,我们都可以不用管,这样是不是有点url方案的感觉。
    但是呢?大家可以看一下spiny使用,我了个大擦,是不是炒鸡无敌麻烦?而且虽然代码都是原生,大家学起来不麻烦,但是如果项目子module多,互相之间都要调用,这岂不是一个很巨大的工程?
    这样看起来,spiny和接口方案可以说是五五开吧!

    新鲜出炉的Loner Modularization

    因为刚自己写了一个简单的框架,名字还没想好,就暂时用我的名字来命名吧!我这个方案思路其实就是在spinny基础上,简化它的注册和使用流程。那怎么简化呢?

    大家都知道apt吧,那其实那么多繁琐的注册过程,我们可不可以使用apt来动态生成呢?当然可以!

    那大家会问,如果调用的话,怎么办?

    注册时候,我们把包名、类名,都保存起来,使用的时候,我们用反射的方法不就可以使用了吗?

    这样的话,我们比接口方案的优势就明显了,唯一的一个缺点就是

    • 接口依赖,编译器检查

    这个问题,如果提供方改掉方法的话,使用放在编译期间是检测不到的。解决方法也是有的,就像我们项目中的接口module,里面的接口中的方法只能递增添加,不能改变。那我们也在Loner中定义,所有提供方的方法,只能递增增加,不能改变。

    git地址:
    LonerModularization

    代码还没完善,也没传到jcenter上,后面会慢慢完善。

    相关文章

      网友评论

          本文标题:模块化方案(二)——介绍

          本文链接:https://www.haomeiwen.com/subject/iiuzottx.html