2. 动态代理:在内存中形成代理类
实现步骤:<br> 1. 代理对象和真实对象实现相同的接口<br> 2. 代理对象 = Proxy.newProxyInstance();<br> 3. 使用代理对象调用方法。<br> 4. 增强方法
代码
// 创建真实对象<br> Lenovo lenovo=new Lenovo();<br> // 使用动态代理增强Lenovo对象<br> // 三个参数:类加载器 接口数组 处理器<br> SaleComputer proxy_lenovo=(SaleComputer) Proxy.newProxyInstance(lenovo.getClass().getClassLoader(),<br> lenovo.getClass().getInterfaces(), new InvocationHandler() {<br> @Override<br> public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {<br> System.out.println(method.getName());<br> System.out.println("代理方法执行了");<br> if(method.getName().equals("sale")){<br> double money=(double)args[0];<br> money=money*0.85;<br> //增强方法参数列表,对原参数money打折再传入<br> Object obj=method.invoke(lenovo,money);<br> //增强返回值类型<br> return obj+"和一个鼠标";<br> }else{<br> Object obj=method.invoke(lenovo,args);<br> return obj;<br> }<br> }<br> });
增强方式:<br> 1. 增强参数列表<br> 2. 增强返回值类型<br> 3. 增强方法体执行逻辑