目的 为其他对象提供一种代理以控制对这个对象的访问。核心 代理类实现与真实主题相同的接口持有对真实主题的引用。在访问真实主题前后可以添加额外的控制逻辑如延迟加载、访问控制、日志记录、远程代理等。场景 远程过程调用、虚拟代理、保护代理和缓存代理等。首先有一个接口声明了若干方法packageproxy;publicinterfaceIGamePlayer{publicvoidlogin();publicvoidkillBoss();publicvoidupgrade();}然后是被代理的类实现接口packageproxy;publicclassGamePlayerimplementsIGamePlayer{privateStringname;publicGamePlayer(Stringname){this.namename;}Overridepublicvoidlogin(){System.out.println(this.name 登录成功);}OverridepublicvoidkillBoss(){System.out.println(this.name 在打怪);}Overridepublicvoidupgrade(){System.out.println(this.name 升级了);}}最后的代理类也实现接口并持有接口的引用packageproxy;publicclassGamePlayerProxyimplementsIGamePlayer{privateIGamePlayergamePlayer;// 持有真实主题的引用publicGamePlayerProxy(IGamePlayergamePlayer){this.gamePlayergamePlayer;// 通过构造函数传入真实对象}Overridepublicvoidlogin(){// 可以在调用前后添加额外逻辑System.out.println(代理正在验证身份...);this.gamePlayer.login();}OverridepublicvoidkillBoss(){System.out.println(代理记录打怪行为...);this.gamePlayer.killBoss();// 玩家击杀boss}Overridepublicvoidupgrade(){this.gamePlayer.upgrade();// 玩家升级System.out.println(代理升级完成记录日志。);}}函数入口packageproxy;publicclassMainTest{publicstaticvoidmain(String[]args){// 通过构造函数传入真实对象IGamePlayerproxynewGamePlayerProxy(newGamePlayer(张三));proxy.login();proxy.killBoss();proxy.upgrade();}}终端输出代理正在验证身份... 张三 登录成功 代理记录打怪行为... 张三 在打怪 张三 升级了 代理升级完成记录日志。