Android面向切面编程

面向切面编程定义:面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。

上面的解释讲完后,估计很多人是似懂非懂的样子,简单的来解释一下,我们在运行我们的App时候,比如请求登录点击事件,请求拍照的事件,Button的埋点点击事件,在一个App里面有很多这样的场景吧,在正常情况下,我们的点击事件都会有相应的跳转或者去干些什么?但是假如我们在手机没有网络的时候,权限还没有被授予的时候,我们通常的做法是不是要写一些比如判断有没有网的,有没有权限的这样的代码,比如下面这段代码:

/**
     * 登录的点击事件
     *
     * @param v
     */
    public void login(View v) {
        //CheckNetUtil网络处理的工具类
        if (CheckNetUtil.isNetworkAvailable(this)) {
            //如果有网,继续操作 比如处理登录的逻辑
        } else {
            Toast.makeText(this, "请检查您的网络连接!", Toast.LENGTH_LONG).show();
        }

    }
我们在点击事件的时候,要去判断有没有网络,就要写if(有没有网络){}else{}这样的代码,app中很多地方这样写,当然这样写实没有问题的。但是我们的app体量大了以后,需要做网络判断的地方多了以后,需要权限的地方多了以后,像 if(有没有网络){}else{}这样的代码就是属于一个体力活。而且不便于后期变动,我们上面的代码现在是没有网络的情况下是弹了一个Toast,但是假如我们将来变个花样,说是我们在没有网络的情况下需要弹出一个dialog,叫用户点击前往设置界面去设置网络呢?是不是又是个体力活,又得去吭哧吭哧的找到这些if else去改代码,那我们到底有么有比较好的方法呢?当然有,那就是我们今天在文章一开始的地方所谈到的面向切面编程。就上面的例子来说,我们该怎么办呢?利用面向切面编程的思想,我们把网络判断的逻辑单读切出来去处理,这样做的好处:

1:保证了代码的简洁。

2:便于扩展,比如上面的我们说的不想要吐司了,要dialog。

利用切面编程之后的代码:

    /**
     * 登录的点击事件
     *
     * @param v
     */
   
    @CheckNet
    public void login(View v) {
        //有网,继续操作 比如处理登录的逻辑
    }
下面我们来看具体的步骤:

先去官网下载aspectj点击打开链接


下载完成之后直接双击安装,如果无法直接双击安装,请检查您的JDK环境,或者直接使用命令进行安装(命令后是自己下载的jar包的名称):

命令:java -jar aspectj-1.8.13


新建工程,到我们刚才安装的AspectJ目录下,去拷贝一个jar包&#x

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值