java框架学习日志-8(AOP简介)

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

这种就是传统的自上而下的编程,或者说纵向的编程,负责启动的模块调用登录模块,登录模块调用战斗模块。这个时候甲方说了,咱们这个游戏要改!登录启动页面要加广告,战斗页面也要加广告。但是三个模块已经写好了,怎么往里面添加功能?这就是面向对象编程的不足,为了弥补这个缺点,就有了面向切面编程(AOP)。

启动,登陆,战斗三个模块代码不变,却增长了新的功能,广告功能至关因而横切进来的。这就是AOP的做用。AOP的编程模式至关因而横向的编程。AOP能够经过代理模式去实现,就像java框架学习日志-7(静态代理和JDK代理)里举的例子同样,收钱,打扫,炒菜的功能不改变,可是能够经过代理模式,将“服务员,麻烦”这一功能横插进代码。AOP的好处和代理模式差很少:
使得真实角色处理的业务更加纯粹,再也不去关注一些公共的事情。
公共业务发生拓展时变得更加集中和方便。java

名词解释

关注点:增长的某一个业务,上面例子中的广告,通常常见的是日志,安全,缓存,事物,异常等业务。一个关注点可能会横切多个对象。
切面:一个关注点的模块化,好比把上面例子中的广告都封装成一个类,这个类就能够叫切面。在OOP中模块化关键单位是类,而在AOP中模块化的单元则是切面。
链接点:在程序执行过程当中某个特定的点,一个链接点老是表示一个方法的执行。关注点横切进来的位置就叫链接点。
通知:在切面的某个特色的链接点上执行的动做。编程

前置通知:在某个链接点以前执行的通知缓存

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

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

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

异常通知:在方法抛出异常退出时执行的通知
最终通知:在某个链接点退出时执行的通知
环绕通知:包围一个链接点的通知,如方法调用,是最强大的一种通知类型。能够在方法调用先后完成自定义的行为。
目标对象:被一个或者多个切面所通知的对象,也叫被通知对象。 织入:把切面链接到其余的应用程序类型或者对象上,并建立一个被通知对象的过程,叫织入框架

相关文章
相关标签/搜索