第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

模式的秘密---代理模式,了解JDK動(dòng)態(tài)代理,小作業(yè)

標(biāo)簽:
Java

实现JDK动态代理的时间和日志
时间代理:

package com.proxy.jdkproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class TimeHandler implements InvocationHandler {
    //定义构造器传递参数
    private Object target;  
    public TimeHandler(Object target) {
        super();
        this.target = target;
    }
    /*参数:
     * proxy 被代理对象
     * method 被代理对象的方法
     * args 方法的参数
     * 返回值:Object方法的返回值
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // TODO Auto-generated method stub
        //进行业务处理,并调用方法
        long starttime=System.currentTimeMillis();
        System.out.println("汽车开始行驶了");
        method.invoke(target);
        long endtime=System.currentTimeMillis();
        System.out.println("汽车结束行驶了,一个行驶了:"+(endtime-starttime)+"毫秒");                          
        return null;
    }
}

日志代理:

package com.proxy.jdkproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class LogHandler implements InvocationHandler {
    private Object object;              
    public LogHandler(Object object) {
        super();
        this.object = object;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // TODO Auto-generated method stub      
        System.out.println("日志开始了");
        method.invoke(object);      
        System.out.println("日志结束了");
                return null;
    }
}

主函数:

package com.proxy.jdkproxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import com.proxy.statics.Car;
import com.proxy.statics.Moveable;
public class JdkMain {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Car car = new Car();
        InvocationHandler ht=new TimeHandler(car);
        InvocationHandler hl=new LogHandler(car);
        //得到Car的class
        Class<?> cls = Car.class;
    /*采用动态代理生成动态代理类 
     *  loader 被代理类的类加载器
     * interfaces 实现的接口
     * h 事件处理器,InvocationHandler
     */
        Moveable mt =(Moveable) Proxy.newProxyInstance(cls.getClassLoader(), 
                cls.getInterfaces(), ht);
        Moveable ml =(Moveable) Proxy.newProxyInstance(cls.getClassLoader(), 
                cls.getInterfaces(), hl);
        mt.move();
        ml.move();
    }
}

代码的执行结果:
图片描述

稍微有点遗憾的是“汽车正在运行中...”这句话显示了两遍,不知道有没有什么方法能只运行一次的。
欢迎大家留言讨论

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消