代理模式:
代理是基本的设计模式之一,它为你提供额外的或者不同的操作,而插入的用来代理"实际"对象的对象.这些操作通常涉及与"实际"对象的通信,因此代理通常充当着中间人的角色.
静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。
下面是进行演示的代码:
首先是代理类的接口:
//抽象角色
public interface ITarget {
public void show();
}
写一个实现类:
//真实角色 目标
public class Target implements ITarget {
@Override
public void show() {
System.out.println("show.....");
}
}
最后就是代理类了:
//代理角色
public class TargetProxy implements ITarget {
private ITarget target; // 目标
public TargetProxy(ITarget target) {
this.target = target;
}
@Override
public void show() {
// 在代理中通过目标来调用真实行为
// 1.例如判断是否有权限调用目标行为
// 2.进行日志操作
// 3.性能临近
target.show();
}
}
静态代理总结:
1.静态代理主要针对接口,无需考虑实例;
2.代理类可以在无需更改原有类的情况下,增强方法,实现自己的业务逻辑;
3.如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度,这也是静态代理的弊端.