- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java静态代理 //购买键盘 SalerProxy proxy = new SalerProxy(new KeyBoardSaler()); proxy.buy(100); class SalerProxy{ ISaler saler; public SalerProxy(ISaler saler){this. saler = saler;} public void buy(int money){ System.out.println(“请到江汉路门市购买。”); if(saler != null) saler.buy(money); System.out.println(“货已发,售后服务期2年。”); } } Java静态代理 Java静态代理 class SalerProxy{ IComputerSaler salerComp; IHouseSaler salerHouse; public SalerProxy(IComputerSaler saler){this.salerComp = saler;} public SalerProxy(IHouseSaler saler){this. salerHouse = saler;} public void buy(int money){ if(salerComp!=null) salerComp.buy(money); else if(salerHouse!=null) salerHouse.buy(money); } } Java静态代理 //购买键盘 SalerProxy proxy = new SalerProxy(new KeyBoardSaler()); proxy.buyComputer(100); //购买房子 SalerProxy proxy = new SalerProxy(new TownHouseSaler()); proxy. buyHouse(100000); Java动态代理 代理商想卖飞机,大炮?代理商想代理所有的商品? 动态代理创建步骤 1.创建一个实现接口InvocationHandler的类,它必须实现invoke方法 2.创建被代理的类以及接口 3.通过Proxy的静态方法 newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) 创建一个代理 4.通过代理调用方法 Java动态代理 class SalerProxy implements InvocationHandler { private Object delegate; public SalerProxy(Object delegate){ this.delegate = delegate; } public static Object getProxy(Object delegate){ Object obj = Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(), new SalerProxy(delegate)); return obj; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return method.invoke(delegate, args); } } newProxyInstance(classLoader, interfaces, invocationHandler); Java动态代理 public class Customer { public static void main(String[] args) { ISaler saler = (ISaler) SalerProxy.getProxy(new ComputerSaler()); saler.buy(1000); IWeapon weapon = (IWeapon)SalerProxy.getProxy(new WeaponSaler()); weapon.sell(2000000); } } Softeem Consultancy Service Softeem Consultancy Service LOGO LOGO LOGO Java反射与代理 SCSJ002 思考 已知类的名
文档评论(0)