Java动态代理

常规的代理模式大家都比较熟悉再次补多少,我们说一下动态代理。说起动态代理就必须做两件事情:
1 必须实现implements InvocationHandler
2 必须使用Proxy来进行中转,也就是使用这个

                                          Class[] interfaces,
                                          InvocationHandler h)```
我们简单举个例子来实现动态代理以及进行执行过程的***拦截过滤***
我们来用一个明星来举例:明星上台时候受伤了只能唱歌,不能跳舞
# 1 声明interface代表通用的会唱歌会跳舞的明星

public interface IStars {
void sing();
void dance();
}

# 2 来个明星

public class Stars implements IStars {
@Override
public void sing() {
System.out.println(this.getClass().getName() + ":sing");
}

@Override
public void dance() {
    System.out.println(this.getClass().getName() + ":dance");
}

}

# 3 来一个泛型的处理明星的中间代理

public class Stars implements IStars {
@Override
public void sing() {
System.out.println(this.getClass().getName() + ":sing");
}

@Override
public void dance() {
    System.out.println(this.getClass().getName() + ":dance");
}

}


# 我们进行一下单元测试

import org.junit.jupiter.api.Test;
public class TestProxy {
@Test
public void test() {
Stars stars = new Stars();
StarsProxy starsProxy = new StarsProxy();
IStars iStars = starsProxy.bind(stars);
iStars.dance();
iStars.sing();
}
}


![image.png](https://upload-images.jianshu.io/upload_images/1635153-44fbbac5e06581f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## 通过例子我看到可以动态的对实现类进行拦截,比如***拦截器 过滤器***

你可能感兴趣的:(Java动态代理)