文章目录
一,代理模式
代理模式是23种设计模式中的一种,代理模式就是给一个对象提供一个代理,就像我们生活中的中介(租房、留学、相亲),由代理对象控制原目标对象的访问,所以在代理对象中就可以实现对目标对象功能的增强、扩展、甚至改写。
- 为什么需要代理?
因为一个良好的设计不应该被轻易的修改,这正是开闭原则的体现:一个良好的设计应该对修改关闭,对扩展开放。而代理正是为了扩展类而存在,他可以控制对现有类(也就是被代理的类)的访问,通俗的说就是可以拦截对现有类方法的调用并做出响应的处理。
代理模式的实际应用场景:aop、权限控制、服务监控、缓存、日志、限流、事务、拦截过滤等。
1.1 代理模式分为静态代理
和动态代理
1.1.1 静态代理
静态代理就是我们自己手写代理类;aspect静态代理(编译器生成代理类)。静态代理:(目标接口、目标接口实现、代理类)。
// 创建目标接口TargetInterface
public interface TargetInterface {
void sayHello(String name);
void sayThanks(String name);
}
// 创建目标接口的实现类
public class TargetIntegerfaceImpl implements TargetInterface{
@Override
public void sayHello(String name) {
System.out.println("sayHello: " + name);
}
@Override
public void sayThanks(String name) {
System.out.println("sayThanks: " + name);
}
}
// 创建测试类
public class proxy_static_test {
public static void main(String[] args) {
// 1. 通过创建接口的实现类, 来代理该接口
TargetInterface targetInterface = new TargetIntegerfaceImpl();
targetInterface.sayHello("张三");
targetInterface.sayThanks("李四");
}
}