静态代理(静态定义代理类)
动态代理 简单点说 就是程序来生成代理类,就是 内存中 自己创建了一个 内存对象
静态代理实例如下:
CarProxy
package com.study.design.proxy;
public class CarProxy implements Car{
private Car car;
public CarProxy(Car car){
this.car=car;
}
@Override
public void run() {
before();
car.run();
end();
}
private void before() {
System.out.println("before");
}
private void end() {
System.out.println("end");
}
}
共同 的接口
package com.study.design.proxy;
public interface Car {
public void run();
}
具体 的实现
package com.study.design.proxy;
public class Byd implements Car {
@Override
public void run() {
System.out.println("Byd");
}
}
测试 代码如下
package com.study.design.proxy;
public class MainTest {
public static void main(String[] args) {
Car car = new Byd();
Car car3 = new CarProxy(car);
car3.run();
}
}
动态代理,基于 两个 类 Proxy InvocationHandler 代码如下
Car car2 = (Car) Proxy.newProxyInstance(Car.class.getClassLoader(), new Class[]{Car.class}, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//这里进业务逻辑加强
return method.invoke(new Byd());
}
});
car2.run();