面向方面的编程简单例子:
对于做菜这一件事,大概分为3步骤:洗菜,炒菜,上菜。而我们比较关注与比较关键的步骤是炒菜。而洗菜和上菜是不关注的步骤但是又是必不可少的步骤。要做好一个菜,我们请大厨来炒菜,但洗菜和上菜会让其他服务员来做,这样做的目的是节省资源,能让大厨炒更多的菜。面向方面的编程即是 对于 洗菜--->炒菜---->上菜 这一个连贯的流程,把它切开来,我们只关注炒菜这一个实现,其他的两个实现使用代理,这就是面向方面的精髓。
代理模式的简单实现:
做菜接口
炒菜类只实现了做菜接口的炒菜关键实现
代理类该接口实现了做菜的其他步骤,并且调用了炒菜类,将整个流程串联了起来
当需要做菜时,只需
实例化一个代理类,将炒菜类传入即可。
Subject sub = new ProxySubject(new RealSubject()) ;
sub.request() ;
运用Spring实现简单的代理
做菜接口
炒菜类只实现了做菜接口的炒菜关键实现
通过实现Spring的MethodBeforeAdvice接口来实现洗菜
通过实现Spring的AfterReturningAdvice接口来实现上菜
在Spring配置中进行配置
调用做菜时: