博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java框架学习日志-8(AOP简介)
阅读量:7077 次
发布时间:2019-06-28

本文共 974 字,大约阅读时间需要 3 分钟。

hot3.png

小王被委托开发一款游戏,程序分为启动页面,登陆页面,战斗页面等。小王就采用了面向对象编程思想(OOP),把整个程序分解成下图

这种就是传统的自上而下的编程,或者说纵向的编程,负责启动的模块调用登陆模块,登陆模块调用战斗模块。这个时候甲方说了,我们这个游戏要改!登陆启动页面要加广告,战斗页面也要加广告。可是三个模块已经写好了,怎么往里面添加功能?这就是面向对象编程的不足,为了弥补这个缺点,就有了面向切面编程(AOP)。
启动,登录,战斗三个模块代码不变,却增加了新的功能,广告功能相当于是横切进来的。这就是AOP的作用。AOP的编程模式相当于是横向的编程。AOP可以通过代理模式去实现,就像里举的例子一样,收钱,打扫,炒菜的功能不改变,但是可以通过代理模式,将“服务员,麻烦”这一功能横插进代码。AOP的好处和代理模式差不多:
使得真实角色处理的业务更加纯粹,不再去关注一些公共的事情。
公共业务发生拓展时变得更加集中和方便。

名词解释

关注点:增加的某一个业务,上面例子中的广告,一般常见的是日志,安全,缓存,事物,异常等业务。一个关注点可能会横切多个对象。

切面:一个关注点的模块化,比如把上面例子中的广告都封装成一个类,这个类就可以叫切面。在OOP中模块化关键单位是类,而在AOP中模块化的单元则是切面。
连接点:在程序执行过程中某个特定的点,一个连接点总是表示一个方法的执行。关注点横切进来的位置就叫连接点。
通知:在切面的某个特点的连接点上执行的动作。

前置通知:在某个连接点之前执行的通知

log.info("前置通知")    public void fight(){}

后置通知:在某个连接点正常完成后执行的通知

public void fight(){}     log.info("后置通知")

异常通知:在方法抛出异常退出时执行的通知

最终通知:在某个连接点退出时执行的通知
环绕通知:包围一个连接点的通知,如方法调用,是最强大的一种通知类型。可以在方法调用前后完成自定义的行为。
目标对象:被一个或者多个切面所通知的对象,也叫被通知对象。 织入:把切面连接到其他的应用程序类型或者对象上,并创建一个被通知对象的过程,叫织入

转载于:https://my.oschina.net/u/4000133/blog/2990412

你可能感兴趣的文章
NFS在Centos 6.3下的安装
查看>>
git pull 和本地文件冲突解决
查看>>
iOS音频AAC视频H264编码 推流最佳方案
查看>>
python基础教程(第2版)第五章读后总结;
查看>>
关于在eclipse中使用tomcat的笔记
查看>>
Android自定义控件实现简单的轮播图控件
查看>>
centos 6.4下的samba服务器的构建
查看>>
持续交付:价值主张
查看>>
二进制、八进制、十进制、十六进制之间转换
查看>>
sqlmap 本地安装
查看>>
[计算机术语]缺省
查看>>
JS --事件
查看>>
printStream 和printWriter区别
查看>>
Centos6.6搭建中文版本的Cacti监控
查看>>
将整数n转换为以b进制的数
查看>>
C语言中的函数指针
查看>>
cd命令
查看>>
IT十八掌作业_java基础第九天_多线程、自动拆装箱
查看>>
使用putty连接linux
查看>>
利用反射获取类的方法及属性
查看>>