//实现接口的具体类 public class Usermpl implements IUser {
@Override public void show() { System.out.println("show"); }
}
然后是一个代理类
1 2 3 4 5 6 7 8 9 10 11 12 13
package com.ex2.www;
public class UserProxy implements IUser { IUser user; //使用接口数据类型 public UserProxy(IUser user) { this.user = user; } @Override public void show() { user.show(); System.out.println("调用了show"); } }
然后是测试类
1 2 3 4 5 6 7 8 9 10 11
package com.ex2.www;
//主类使用接口类型引用具体实现 public class ProxyTest { public static void main(String[] args) { IUser user = new Usermpl(); //user.show(); IUser userProxy = new UserProxy(user); userProxy.show(); } }
动态代理
动态代理概念
动态代理是一种在运行时创建代理对象的技术,它允许在不修改原始代码的情况下增强方法的功能
动态代理实现
提供一个接口
1 2 3 4 5 6 7
package com.ex3.www;
import java.lang.reflect.Proxy;
public interface IUser { public void show(); }
接口的实现类
1 2 3 4 5 6 7 8 9
package com.ex3.www;
public class UserImpl implements IUser { @Override public void show() { System.out.println("show"); }
public class ProxyTest { public static void main(String[] args) { IUser user = new UserImpl(); InvocationHandler userinvationhandler = new UserinvationHandler(user); //传入一个对象,也就是user