静态代理中,代理类和被代理类都需要实现同一个接口。一个静态代理类只能代理一个类,如果还有其他的类要使用代理,那必须再写一个代理类。代码复用比较差。
public class Test01 {
public static void main(String[] args) {
Person person = new Person("张三");
Court court = new Layer(person);
court.doCourt();
}
}
// 接口
interface Court {
void doCourt();
}
// 被代理类
class Person implements Court {
private String name;
public Person(String name) {
this.name = name;
}
public void doCourt() {
System.out.println(name + "说:我没有犯法");
}
}
// 代理类
class Layer implements Court {
// 代理person
private Person person;
public Layer(Person person) {
this.person = person;
}
public void doCourt() {
// 对doCourt 方法进行增强
System.out.println("律师取证:证明张三当时在旅游,不可能犯罪");
System.out.println("律师总结: 张三不可能犯罪");
person.doCourt();
}
}