模擬簡單的動態代理
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
- 動態代理竟然如此簡單!
- CGlib動態代理-簡單介紹CGLib
- 簡單易用的前端模擬資料前端
- 模擬展示動態按鈕
- 簡單模擬javaScript物件導向JavaScript物件
- SearchView的簡單使用和模擬搜尋View
- 模擬data block lost write的簡單方法BloC
- 簡單機器語言的模擬 (轉)
- 簡單的string類的模擬實現
- 小車側方位停車過程的動態模擬matlab模擬Matlab
- 使用Netty和動態代理實現一個簡單的RPCNettyRPC
- Spring 架構的簡單模擬實現Spring架構
- Java代理(jdk靜態代理、動態代理和cglib動態代理)JavaJDKCGLib
- 靜態代理和動態代理
- JAVA 靜態代理 & 動態代理Java
- Java中的靜態代理和動態代理Java
- 靜態代理、動態代理與Mybatis的理解MyBatis
- 代理模式詳解:靜態代理、JDK動態代理與Cglib動態代理模式JDKCGLib
- js MIPS乘法模擬的方法簡單介紹JS
- 簡單實現.NET Hook與事件模擬Hook事件
- sed+awk模擬簡單sql查詢SQL
- 代理模式 - 動態代理模式
- mumu模擬器設定代理
- java 的動態代理Java
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- java靜態代理和動態代理Java
- 動態代理
- Proteus實現簡單51程式的設計與模擬
- 使用 Raku 編寫簡單的文字識別模擬程式
- oracle實用sql(13)--併發簡單模擬OracleSQL
- HtmlUnit 爬蟲簡單案例——模擬登陸CSDNHTML爬蟲
- AOP之靜態代理VS動態代理
- BootStrap的動態模態框及靜態模態框boot
- Redis—簡單動態字串(SDS)Redis字串
- 你必須會的 JDK 動態代理和 CGLIB 動態代理JDKCGLib
- 讓我們打一場動態代理的官司–Java動態代理Java
- 動態生成HTML元素-模擬線上考試功能HTML