定义一个MyClass类(或接口),包括math()、english()和physics()方法,可以简单模拟输出:上数学课/英语课/物理课….,上每一门课之前先要执行check()方法查看课表和preparation()方法检查上课用品,上完后需要执行pack()方法收拾书包,这些工作定义在MyAspect类中。请选择使用JDK动态代理、CGLIB代理、ProxyFactoryBean或者AspectJ中的某一种方式来实现增强处理。测试类
时间: 2023-06-19 18:09:35 浏览: 98
这里使用AspectJ来实现增强处理。
首先,定义`MyClass`接口及其实现类:
```java
public interface MyClass {
void math();
void english();
void physics();
}
public class MyClassImpl implements MyClass {
@Override
public void math() {
System.out.println("上数学课...");
}
@Override
public void english() {
System.out.println("上英语课...");
}
@Override
public void physics() {
System.out.println("上物理课...");
}
}
```
接着,定义`MyAspect`类来实现增强处理:
```java
public class MyAspect {
public void check() {
System.out.println("查看课表...");
}
public void preparation() {
System.out.println("检查上课用品...");
}
public void pack() {
System.out.println("收拾书包...");
}
public void before() {
check();
preparation();
}
public void after() {
pack();
}
}
```
最后,使用AspectJ来实现增强处理:
```java
public class Test {
public static void main(String[] args) {
MyClass myClass = new MyClassImpl();
MyAspect aspect = new MyAspect();
AspectJProxyFactory proxyFactory = new AspectJProxyFactory();
proxyFactory.setTarget(myClass);
proxyFactory.addAspect(aspect);
MyClass proxy = proxyFactory.getProxy();
proxy.math();
proxy.english();
proxy.physics();
}
}
```
输出结果如下:
```
查看课表...
检查上课用品...
上数学课...
收拾书包...
查看课表...
检查上课用品...
上英语课...
收拾书包...
查看课表...
检查上课用品...
上物理课...
收拾书包...
```
阅读全文