动态代理与AOP

    xiaoxiao2025-12-02  8

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Aop { public static void main(String[] args) { Music music = new Music();//创建一个真正对象 Art art = (Art) ProxyFactory.getProxy(music);//创建一个动态代理 art.perform(); } } /** * 要让对象能被动态代理,要为对象定义一个接口 * @author Administrator * */ interface Art{ public void perform(); } class Music implements Art{ @Override public void perform() { System.out.println("音乐家表演音乐"); } } class Broker{ public void money(){ System.out.println("出厂费100万"); } public void thank(){ System.out.println("感谢各位观众"); } } class ProxyFactory{ public static Object getProxy(Object obj){ return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Broker broker = new Broker(); broker.money();//在执行主要逻辑业务前的工作 Object result = method.invoke(obj, args); broker.thank();//在执行主要逻辑业务后的工作 return result; } }); } }
    转载请注明原文地址: https://ju.6miu.com/read-1304528.html
    最新回复(0)