谈谈Java的动态代理

2018-11-25  本文已影响0人  在彼处

动态代理机制的设计的目的是解耦,在很多类中,一个函数需要重复写,如果每个类中都有该函数,造成代码的耦合,单独提出来之后,这个时候很多类可以直接调用,则这几个类又和特定的方法耦合了,可以用动态代理解耦合;

jdk的动态代理只能为接口创建动态代理;

newProxyInstance方法,直接可以创建一个动态代理对象,该代理对象的实现类实现了interfaces指定的系列接口,执行动态代理对象的每个方法时都会被替换执行InvocationHandle对像的invoke方法

接口实现的方法

在该程序中,Dog是个接口,接口中有三个方法,传统方法中,创建一个Dog对象时候需要new Dog()的形势才能创建出来,现在通过动态代理机制,直接创建一个动态代理对象出来,通过

Dog dog = new GunDog();

Dog dog1 = (Dog) MyProxyFactory.getProxy(dog);

//执行具体方法的时候都会去调用IncocationHandler中的invoke()方法,可以在invoke()方法中定义一些其他方法实现其他方法

dog1.info();//直接调用

dog1.run();//直接调用

dog1.bark("哈哈");

上一篇下一篇

猜你喜欢

热点阅读