Spring温故知新六AOP向切面程

Spring温故知新六AOP向切面程

ID:42596467

大小:53.61 KB

页数:16页

时间:2019-09-18

Spring温故知新六AOP向切面程_第1页
Spring温故知新六AOP向切面程_第2页
Spring温故知新六AOP向切面程_第3页
Spring温故知新六AOP向切面程_第4页
Spring温故知新六AOP向切面程_第5页
资源描述:

《Spring温故知新六AOP向切面程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、文章分类:Java编程这一章我们将开始剖析Spring框架最为重要的AOP(AspectOrientedProgramming)面向切面编程。可以说Spring的精华就在于AOP了。所谓AOP,就是相对于OOP(ObjectOrientedProgramming)面向对象编程的说法,有些人喜欢叫面向切面编程,有些人喜欢叫做面向方面,事实上这两个都是指同一个东西,只是叫法不同。我们传统的编程都是面向对象,就是说每个类都有它实际的意义。而面向切面略有不同,它在面向对象的基础上扩展了一下,它编程的时候不是先考虑的一个具体对象(比如用户类),而是先考虑的对象的行为或者功能。这个不是编程方法的不

2、同,而是编程思维的转变。理论性的东西还是放一边,我们用实际的机器人案例来慢慢理解这个概念。为了突出重点我们这里重写了ISpeak:packagecom.iteye.bolide74.impl;publicinterfaceISpeaker{publicvoidsay(Stringmsg);}接着是实现这个接口的机器人类:packagecom.iteye.bolide74.action;importcom.iteye.bolide74.impl.ISpeaker;publicclassRobotimplementsISpeaker{publicStringname;publicStrin

3、ggetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicRobot(Stringname){this.name=name;}@Overridepublicvoidsay(Stringmsg){System.out.println("到达邻居家,对邻居说:"+msg+",我是"+this.name);}}那么现在我们要实现跟很多个不同的邻居(不同的应用代码)打招呼,只需要下面的应用代码了:packagecom.iteye.bolide74.tester;importcom.iteye.bolid

4、e74.action.Robot;importcom.iteye.bolide74.impl.ISpeaker;publicclassTester{publicstaticvoidmain(String[]args){ISpeakerspeaker=newRobot("Wall-E");speaker.say("你好");}}以上是实现最简单功能的方法。现在我们要慢慢增加功能了,假设Wall-E在出发打招呼之前要先拿一个礼物,然后打完招呼以后把礼物递给邻居,该怎么实现呢?publicvoidgetGift(){System.out.println("获取了一个礼物");}publicv

5、oidgiveGift(){System.out.println("赠予一个礼物");}最傻的办法就是每次在应用代码里调用speaker.say()方法的前后都调用get/give方法,小程序还好,要是大型程序的话人都要写傻掉。那么能不能直接把get/give方法写在Robot类的say()方法里呢?这样好处是每次调用say()的时候都能实现get/give功能,但是坏处也是这个:万一有个别邻居是不需要给礼物的呢?怎么办?那有没有更加灵活的办法呢?当然有!代理模式:我们先新建一个SpeakerProxy代理类:packagecom.iteye.bolide74.action;impor

6、tcom.iteye.bolide74.impl.ISpeaker;publicclassSpeakerProxyimplementsISpeaker{ISpeakerspeaker;publicSpeakerProxy(ISpeakerspeaker){super();this.speaker=speaker;}@Overridepublicvoidsay(Stringmsg){getGift();speaker.say(msg);giveGift();}publicvoidgetGift(){System.out.println("获取了一个礼物");}publicvoidgive

7、Gift(){System.out.println("赠予一个礼物");}}这个SpeakerProxy类实现了ISpeaker接口,然后又有一个靠构造函数传入的ISpeaker类型的成员属性。而这个SpeakerProxy类的say()方法就有点意思了,它不是重写了自己的say()方法,而是调用了ISpeaker类型的speaker成员属性的say()方法,然后再这个say()方法前后嵌入get/give方法。让我们看看这个SpeakerPr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。