序、时间于同样的方式留经我们每个人,每个人却以不同的方式对待时间。
前言
一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦
1.AOP
AOP(Aspect Oriented Programming)面向切面思想,是Spring的三大核心思想之一(AOP-面向切面、IOC-控制反转、DI-依赖注入)
AOP,一般成为面向切面,作为面向对象OOP的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块之间的耦合度,提高了系统的可维护性。可用于权限认证,日志和事务处理.
Java是一个面向对象(OOP)的编程语言,但它有个弊端就是当需要为多个不具有继承关系的对象引入一个公共行为时,例如日志记录、权限校验、事务管理、统计等功能,只能在每个对象里都引用公共行为,这样做不便于维护,而且有大量重复代码,AOP的出现弥补了OOP的这点不足。
我认为最核心的一个作用就是:在不改变原始设计的基础上扩展功能。
在最早的时候,项目里面对登录和非登录用户设计了很多功能上的划分,这就导致在项目各个地方都存在登录逻辑的判断到跳转新页面到操作完成之后无缝进入功能页面。
那时候就是使用了AOP,确实很完美的hold住了这个需求。但是在新老版本的维护上,尤其是AspectJ的更新,对其他同事介入有一定的开发成本。
现在ARouter的拦截器就可以完美解决上述需求。
2.拦截器
在ARouter的官方文档中ARouter.md已经表明了这是面向切面编程。
声明拦截器(拦截跳转过程,面向切面编程)
// 比较经典的应用就是在跳转过程中处理登陆事件,这样就不需要在目标页重复做登陆检查 // 拦截器会在跳转之间执行,多个拦截器会按优先级顺序依次执行 @Interceptor(priority = 8, name = "测试用拦截器") public class TestInterceptor implements IInterceptor { @Override public void process(Postcard postcard, InterceptorCallback callback) { ... callback.onContinue(postcard); // 处理完成,交还控制权 // callback.onInterrupt(new RuntimeException("我觉得有点异常")); // 觉得有问题,中断路由流程 // 以上两种至少需要调用其中一种,否则不会继续路由 } @Override public void init(Context context) { // 拦截器的初始化,会在sdk初始化的时候调用该方法,仅会调用一次 } }
。。。。END
一定要去给ARouter Star一下。略表心仪