模擬簡單的動態代理
UsbShell.java
package dontaidiali.service;
/**
* 目標介面
*/
public interface UsbShell {
float sell(int amount);
}
UsbKingFactory.java
package dontaidiali.factory;
import dontaidiali.service.UsbShell;
/**
* 目標類
*/
public class UsbKingFactory implements UsbShell {
@Override
public float sell(int amount) {
return 85.0f;
}
}
MyHander.java
package dontaidiali.shangjia;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class MyHandler implements InvocationHandler {
private Object target = null;
public MyHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object res = null;
res = method.invoke(target,args);
if (res!=null){
Float price = (float) res;
price = price +15;
res = price;
}
System.out.println("通過代理");
return res;
}
}
Test.java
package dontaidiali;
import dontaidiali.factory.UsbKingFactory;
import dontaidiali.service.UsbShell;
import dontaidiali.shangjia.MyHandler;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Test {
public static void main(String[] args) {
//1.建立目標物件
UsbShell taobao = new UsbKingFactory();
//2.建立MyHandler物件
InvocationHandler daiLi = new MyHandler(taobao);
//3.建立代理物件
UsbShell proxy = (UsbShell) Proxy.newProxyInstance(taobao.getClass().getClassLoader(),
taobao.getClass().getInterfaces(),
daiLi);
//4.代理物件呼叫方法
float s = proxy.sell(1);
System.out.println(s);
}
}
執行結果
相關文章
- java 動態代理簡單使用Java
- 動態代理竟然如此簡單!
- 簡單的模擬(洛谷)
- 簡單模擬死鎖
- sort回撥的簡單模擬
- 使用Netty和動態代理實現一個簡單的RPCNettyRPC
- 簡單易用的前端模擬資料前端
- 1046 Shortest Distance(簡單模擬)
- Java代理(jdk靜態代理、動態代理和cglib動態代理)JavaJDKCGLib
- 小車側方位停車過程的動態模擬matlab模擬Matlab
- 模態和非模態對話方塊(簡單易懂!)
- 代理模式詳解:靜態代理、JDK動態代理與Cglib動態代理模式JDKCGLib
- Java中的靜態代理和動態代理Java
- 靜態代理、動態代理與Mybatis的理解MyBatis
- 靜態代理和動態代理
- JAVA 靜態代理 & 動態代理Java
- 代理模式 - 動態代理模式
- POJ3087 Shuffle'm Up【簡單模擬】
- 簡單實現.NET Hook與事件模擬Hook事件
- 動態代理
- 你必須會的 JDK 動態代理和 CGLIB 動態代理JDKCGLib
- redis string 簡單動態字串Redis字串
- Redis—簡單動態字串(SDS)Redis字串
- .NetCore+Jexus代理+Redis模擬秒殺商品活動NetCoreRedis
- Proteus實現簡單51程式的設計與模擬
- 使用 Raku 編寫簡單的文字識別模擬程式
- 3.靜態代理&動態代理&CGlibCGLib
- AOP之靜態代理VS動態代理
- 讓我們打一場動態代理的官司–Java動態代理Java
- cglib動態代理和jdk動態代理的區別與應用CGLibJDK
- mumu模擬器設定代理
- PAT B1009 說反話(簡單模擬)
- 【Tomcat】Tomcat工作原理及簡單模擬實現Tomcat
- spring aop原理 JDK動態代理和CGLIB動態代理SpringJDKCGLib
- guava反射:Reflection.newProxy方法簡化動態代理Guava反射
- Spring動態代理的生成-如何判斷是使用JDK動態代理還是CGlib代理SpringJDKCGLib
- JDK動態代理JDK
- CGLib 動態代理CGLib