1.创建接口,让目标对象也就是被代理对象实现接口
public interface ITeacherDao {
void teach();
}
```java
public class TeacherDao implements ITeacherDao {
@Override
public void teach() {
System.out.println("上课........");
}
}
2.同时创建代理类,实现相同接口,提供接口类属性,用于接收构造方法中对目标对象的初始化参数,teach()方法对目标对象进行增强。
public class TeacherDaoProxy implements ITeacherDao {
private ITeacherDao target;
public TeacherDaoProxy(ITeacherDao target){
this.target = target;
}
@Override
public void teach() {
System.out.println("上课前的操作");
//调用被代理对象(也就是目标对象)的方法
target.teach();
System.out.println("下课了。。。");
}
}
3.创建测试类,创建目标对象,通过向代理对象传入目标对象调用代理对象的方法,从而对目标对象的方法进行了扩展或增强。
public class Client01 {
public static void main(String[] args) {
// 创建目标对象
TeacherDao teacherDao = new TeacherDao();
// 创建代理对象
TeacherDaoProxy proxy = new TeacherDaoProxy(teacherDao);
proxy.teach();
}
}