资讯动态

java学习笔记(十八)——动态代理模式

发布时间:2026/10/26 1:26:28 来源:尧图企业网站定制
文章目录开发步骤案例开发步骤案例必须定义接口里面定义一些行为用来约束被代理对象和代理对象都要完成的事情。public interface Starable { public String Sing(); public String Dance(); }定义一个实现类实现接口这个实现类的对象代表被代理的对象。public class BigStar implements Starable{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name name; } public int getAge() { return age; } public void setAge(int age) { this.age age; } public String Sing(){ System.out.println(name正在唱歌); return 谢谢; } public String Dance(){ System.out.println(name正在跳舞); return 谢谢~; } }代理对象中需要模拟收首付款真正触发被代理对象的行为然后接收尾款操作。import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class ProxyUtil { public static Starable createProxy(BigStar star){ Starable starProxy(Starable) Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(), new Class[]{Starable.class}, new InvocationHandler() { Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String name method.getName(); if(nameSing){ System.out.println(收话筒费一万元); } else if(nameDance){ System.out.println(收场地费十万元); } return method.invoke(star,args); } }); return starProxy; } }定义一个测试类在里面创建被代理对象然后为其创建一个代理对象返回。重点public class Test{ static void main(){ BigStar snew BigStar(); s.setName(小明); Starable starProxyProxyUtil.createProxy(s); String str1starProxy.Sing(); System.out.println(str1); String str2starProxy.Dance(); System.out.println(str2); } }通过返回的代理对象进行方法的调用观察动态代理的执行流程。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑