小王被委托开发一款游戏,程序分为启动页面,登陆页面,战斗页面等。小王就采用了面向对象编程思想(OOP),把整个程序分解成下图
![](https://oscimg.oschina.net/oscnet/93415471720583d8b834a0bb78d9efe027d.jpg)
![](https://oscimg.oschina.net/oscnet/d1743ba27f847df98c1e9dffb6a99074ef8.jpg)
名词解释
关注点:增加的某一个业务,上面例子中的广告,一般常见的是日志,安全,缓存,事物,异常等业务。一个关注点可能会横切多个对象。
切面:一个关注点的模块化,比如把上面例子中的广告都封装成一个类,这个类就可以叫切面。在OOP中模块化关键单位是类,而在AOP中模块化的单元则是切面。 连接点:在程序执行过程中某个特定的点,一个连接点总是表示一个方法的执行。关注点横切进来的位置就叫连接点。 通知:在切面的某个特点的连接点上执行的动作。前置通知:在某个连接点之前执行的通知
log.info("前置通知") public void fight(){}
后置通知:在某个连接点正常完成后执行的通知
public void fight(){} log.info("后置通知")
异常通知:在方法抛出异常退出时执行的通知
最终通知:在某个连接点退出时执行的通知 环绕通知:包围一个连接点的通知,如方法调用,是最强大的一种通知类型。可以在方法调用前后完成自定义的行为。 目标对象:被一个或者多个切面所通知的对象,也叫被通知对象。 织入:把切面连接到其他的应用程序类型或者对象上,并创建一个被通知对象的过程,叫织入