最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

動(dòng)態(tài)代理的代碼

2020-05-17 22:10 作者:小垃圾kiki  | 我要投稿
package cn.itcast.proxy;

public interface SaleComputer {
?? ?public String sale(double money);
?? ?
?? ?public void show();
}

package cn.itcast.proxy;


/*
?* 真實(shí)類(lèi)
?*/
public class Lenovo implements SaleComputer {

?? ?@Override
?? ?public String sale(double money) {
?? ??? ?System.out.println("花了"+money+"元買(mǎi)了一臺(tái)聯(lián)想電腦");
?? ??? ?return "聯(lián)想電腦";
?? ?}

?? ?@Override
?? ?public void show() {
?? ??? ?System.out.println("展示電腦...");
?? ??? ?
?? ?}
?? ?
}

package cn.itcast.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyTest {
?? ?public static void main(String[] args) {
?? ??? ?//1.創(chuàng)建真實(shí)對(duì)象
?? ??? ?Lenovo lenovo=new Lenovo();
?? ??? ?/*
?? ??? ? * 三個(gè)參數(shù):
?? ??? ? * ?? ??? ??? ?1.類(lèi)加載器:真實(shí)對(duì)象.getClass().getClassLoader()
?? ??? ? * ?? ??? ??? ?2.接口數(shù)組:真實(shí)對(duì)象.getClass().getInterfaces()???? 保證代理對(duì)象和真實(shí)對(duì)象實(shí)現(xiàn)相同的接口
?? ??? ? * ?? ??? ??? ?3.處理器;new InvocationHandler(){}??? 匿名內(nèi)部類(lèi)的寫(xiě)法
?? ??? ? * ?? ??? ??? ??? ?里面是我們核心業(yè)務(wù)邏輯的處理
?? ??? ? */?? ??? ??? ?
?? ??? ?
?? ??? ?//2.動(dòng)態(tài)代理增強(qiáng)lenovo對(duì)象
?? ??? ?//最終返回的就是代理對(duì)象
?? ??? ?//因?yàn)閷?shí)現(xiàn)的是相同的接口可以強(qiáng)轉(zhuǎn)成接口類(lèi)型
?? ??? ?//大類(lèi)型轉(zhuǎn)小類(lèi)型要強(qiáng)轉(zhuǎn)
?? ??? ?SaleComputer proxy_lenovo =(SaleComputer) Proxy.newProxyInstance(lenovo.getClass().getClassLoader(), lenovo.getClass().getInterfaces(), new InvocationHandler() {
?? ??? ??? ?/*
?? ??? ??? ? * 代理邏輯進(jìn)行編寫(xiě)的方法:代理對(duì)象調(diào)用的所有方法都會(huì)觸發(fā)該方法的執(zhí)行
?? ??? ??? ? * ?? ??? ?參數(shù):
?? ??? ??? ? * ?? ??? ??? ?1.proxy:代理對(duì)象?? 這里指的就是:proxy_lenovo
?? ??? ??? ? * ?? ??? ??? ?2.method:代理對(duì)象調(diào)用的方法封裝為對(duì)象
?? ??? ??? ? * ?? ??? ??? ?3.atgs:代理對(duì)象調(diào)用方法傳遞的實(shí)際參數(shù)
?? ??? ??? ? *
?? ??? ??? ? */
?? ??? ??? ?@Override
?? ??? ??? ?public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//?? ??? ??? ??? ?System.out.println("該方法執(zhí)行了");
//?? ??? ??? ??? ?System.out.println(method.getName());
//?? ??? ??? ??? ?System.out.println(args[0]);
?? ??? ??? ??? ?//判斷是否是sale方法
?? ??? ??? ??? ?if(method.getName().equals("sale")) {
?? ??? ??? ??? ??? ?//1.增強(qiáng)參數(shù)
?? ??? ??? ??? ??? ?double money=(double)args[0];
?? ??? ??? ??? ??? ?money=money*0.85;
?? ??? ??? ??? ??? ?System.out.println("專(zhuān)車(chē)接你");
?? ??? ??? ??? ??? ?//使用真實(shí)對(duì)象調(diào)用該方法
?? ??? ??? ??? ??? ?String obj = (String)method.invoke(lenovo, money);
?? ??? ??? ??? ??? ?System.out.println("免費(fèi)送貨");
?? ??? ??? ??? ??? ?//2.增強(qiáng)返回值
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?return obj+"_鼠標(biāo)墊";
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}else {
?? ??? ??? ??? ??? ?Object obj = method.invoke(lenovo, args);
?? ??? ??? ??? ??? ?return obj;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?});
?? ??? ?
?? ??? ?//2.調(diào)用方法
?? ??? ?String computer = proxy_lenovo.sale(8000);
?? ??? ?System.out.println(computer);
?? ?}

}

動(dòng)態(tài)代理的代碼的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
尉犁县| 清流县| 海兴县| 清流县| 南开区| 绥芬河市| 连州市| 安龙县| 饶河县| 宁津县| 府谷县| 乐亭县| 南岸区| 金门县| 合江县| 潮安县| 安徽省| 肃北| 綦江县| 赣榆县| 黑河市| 兴隆县| 佛山市| 丹巴县| 瓦房店市| 开原市| 武夷山市| 固安县| 澎湖县| 沐川县| 犍为县| 宿州市| 金坛市| 旬邑县| 会宁县| 张家界市| 交城县| 云安县| 尖扎县| 历史| 临颍县|