spring特性2-aop

来源:互联网 发布:7.23温州动车事故 知乎 编辑:程序博客网 时间:2024/06/16 17:32

1.场景

如果需要在mp3播放前将歌曲从云端同步下来,播放结束后将本地歌曲保存到云端。

2.解决办法

定义一个新的辅助类,并注入到mp3,在播放前和播放后调用辅助类中的相应方法。代码如下

package com.amber.ivy.spring;
/**
 * 助理类,mp3同步助手
 * @author ivyamber
 *
 */
public class Assistant {
public static void main(String[] args) {

}
public void prepare()
{
System.out.println("同步云端歌曲列表到mp3");
}
public void save()
{
System.out.println("保存当前mp3内歌曲列表");
}


}


package com.amber.ivy.spring;
/**
 * 带有同步助手的mp3
 * @author ivyamber
 *
 */
public class Mp3WithoutAOP {
private Singer singer;//使用接口而不是用具体的实现
private Assistant assistant;
public Mp3WithoutAOP(Singer singer,Assistant assistant)
{
this.singer = singer;
this.assistant = assistant;
}
public void play()
{

assistant.prepare();
singer.sing();
assistant.save();
}


}


package com.amber.ivy.spring;


public class NoneAOP {


public static void main(String[] args) {
Mp3WithoutAOP mp3 = new Mp3WithoutAOP(new NonePopMusicSinger(), new Assistant());
mp3.play();


}


}
输出结果:
同步云端歌曲列表到mp3
我是流行歌手,我唱流行音乐
保存当前mp3内歌曲列表

这样编写很容易理解。但是似乎不是每一个mp3使用者都希望mp3有这个功能,怎么办?
0 0