代理模式
代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是,可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。
代理模式种类:静态代理,动态代理(JDK代理),Cglib代理。
静态代理
静态代理:需要定义接口或者父类,被代理对象与代理对象一起实现接口或者继承相同父类。
静态代理UML类图:
代码实现:
接口类:
public interface Student {
void add();
}
被代理类:
public class SubStudent01 implements Student {
public void add() {
System.out.println("我是被代理学生");
}
}
代理类:
public class SubStudent02 implements Student {
private Student student;
public SubStudent02(Student student){
this.student = student;
}
public void add() {
System.out.println("我是代理学生");
student.add();
}
}
测试类:
public class Test {
public static void main(String[] args) {
SubStudent01 subStudent01 = new SubStudent01();
SubStudent02 subStudent02 = new SubStudent02(subStudent01);
subStudent02.add();
// 我是代理学生
//我是被代理学生
}
}