动态代理模式

    xiaoxiao2022-07-14  160

    接口类

    public interface HouseAgent { void buy(); }

    实现类

    public class Zhangsan implements HouseAgent { @Override public void buy() { System.out.println("我要买大House"); } }

    动态代理类

    public class JdkProxy implements InvocationHandler { private HouseAgent traget; public Object getInstance(HouseAgent traget) { this.traget =traget; System.out.println("进入getInstance"); Class<?> clazz = traget.getClass(); return Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("你想要买什么样的房子啊?"); method.invoke(this.traget, args); System.out.println("房子找到了,有时间来看"); return null; } }

    测试类

    public class HouseAgentTest { public static void main(String[] args) { HouseAgent houseAgent = (HouseAgent) new JdkProxy().getInstance(new Zhangsan()); houseAgent.buy(); } }
    最新回复(0)