准备开始好好写博客了,之前一直没有注重这个,吃了不少亏;现在希望能记录下来自己所学到的知识,加深理解,也希望可以帮到其他人,让我们一起共创2020年的美好吧...
首先我们知道现在Java编程都是面向接口加实现类的方式,按照之前的写法都是new一个对象就可以开始调了,但是一些特殊的场景由于在代码编译的时候还不能确定下来由哪一个类来调用,因此需要在类动态运行时才能确定下来具体需要执行哪个类的方法,因此用到了动态代理,但是在说动态代理之前,先粗略的写下静态代理,以加深理解吧...
我的理解是,一个静态代理就是给代理对象绑定一个被代理对象的接口,然后new代理对象的时候,把被代理对象传进去,用代理对象调用方法就可以,代码如下:
import org.junit.Test;
/**
* 接口
*/
interface human {
public void eat();
}
/**
* 被代理人对象
*/
class SuperMan implements human {
public void eat() {
System.out.println("超人也需要吃饭。。。");
}
}
/**
* 静态代理对象
*/
class proxyHuman implements human {
private human h;
public proxyHuman(human h) {
this.h = h;
}
public void eat() {
System.out.println("吃饭之前洗手");
h.eat();
System.out.println("吃饭之后漱口");
}
}
/**
* 测试静态代理对象
*/
public class ProxyTest {
@Test
public void test() {
human human = new SuperMan();
proxyHuman proxyHuman = new proxyHuman(human);
proxyHuman.eat();
}
}
输出结果如下:
吃饭之前洗手
超人也需要吃饭。。。
吃饭之后漱口