一、什么是静态代理
静态代理是指,由程序员在编写代码时候自己写的一套代理类,来代理对象控制真实对象的使用权限。
二、举个例子
public interface IProgrammer{
void codding();
void debug();
}
public class ProgrammerImpl implements IProgrammer{
@Override
public void codding(){
System.out.println("敲代码");
}
@Override
public void debug(){
System.out.println("debug");
}
}
public class ProgrammerProxy implements IProgrammer(){
ProgrammerImpl target;
public ProgrammerProxy(ProgrammerImpl programmerImpl){
this.target = programmerImpl;
}
@Override
public void codding(){
target.codding();
System.out.println("敲代码2");
}
@Override
public void debug(){
target.debug();
System.out.println("debug2");
}
}
上面代码很简单,定义接口,代理类实现接口,拓展了原生实现接口类
三、静态代理类优缺点
优点:
1、代理使客户端不需要知道实现类是什么,怎么做的,而客户端只需知道代理即可(解耦合)
2、业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
缺点:
代理类和委托类实现了相同的接口,代理类通过委托类实现了相同的方法。这样就出现了大量的代码重复。如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。