代理详解

首先代理是什么,在现实生活中我们很常听见的代名词叫做代理商,我们买东西,可以自己去国外买,也可以通过代理商去国外买,我们找代理商买,在找代理商买的时候还能有某些优惠活动。代理类也就是类似于代理商。我们可以调用具体的实现类,也可以通过代理类,在代理类中再去调用具体的实现类方法,并且在调用具体方法前后进行一个增强活动。
代理分为了动态代理和静态代理。
1、静态代理
静态代理的实现方式:
1)定义一个接口

public interface Calculate{

    int add(int num1,int num2);
}

2)定义一个委托类(被代理的类)

public class Calculator implements Calculate {

    @Override
    public int add(int num1, int num2) {
        System.out.println(num1 + "+" + num2 + "=" + num1 + num2);
        return num1 + num2;
    }
}

3)定义一个代理类

public class CalculatorWithLog implements Calculate {

    private Calculator calculator;

    public CalculatorWithLog(Calculator calculator) {
        this.calculator = calculator;
    }


    @Override
    public int add(int num1, int num2) {
        System.out.println("执行具体代码前保存日志");
        int add = calculator.add(num1, num2);
        System.out.println("执行具体代码前保存日志");
        return add;
    }

}

4)测试

 public static void main(String[] args) {
        Calculator calculator = new Calculator();
        CalculatorWithLog calculatorWithLog = new CalculatorWithLog(calculator);
        calculatorWithLog.add(2, 3);
    }


静态代理实现总结: 主要是先有一个接口,接口里实现了某个方法,然后定义一个委托类,委托类实现了接口,对接口的方法进行重写具体方法的作用。最后定义一个代理类,代理类同样实现了接口并且它的成员对象就是委托类,在重写的方法中去调用委托类的具体方法,并且可以在方法前后做一个增强活动。
2、动态代理
参考:https://blog.csdn.net/hc1285653662/article/details/127199791

posted @ 2023-10-13 23:11  Great-R  阅读(32)  评论(0)    收藏  举报