通过代理对象访问目标对象 在目标对象基础上增强额外的功能(添加权限 访问控制 审计)
在不修改原有代码的 或没有办法修改原有代码的情况下
增强对象功能 使用代理对象代替原来的对象完成功能达到拓展功能的目的
public class Test1 {
public static void main(String[] args) {
Person person = new Person("张三");
Court court = new Lawyer(person);
court.doCourt();
}
}
//接口
interface Court{
void doCourt();
}
//代理类
class Lawyer implements Court{
private Person person;
public Lawyer(Person person) {
this.person = person;
}
@Override
public void doCourt() {
System.out.println("律师取证:视频证明张三当时在旅游 不在案发现场");
System.out.println("律师总结:张三不可能杀人");
person.doCourt();
}
}
//被代理的类
class Person implements Court{
private String name;
public Person(String name) {
this.name = name;
}
@Override
public void doCourt() {
System.out.println(name + "说:我没有杀人");
}
}