大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 動態(tài)代理設(shè)計模式

動態(tài)代理設(shè)計模式

更新時間:2021-08-10 13:48:24 來源:動力節(jié)點 瀏覽1297次

1.反射與代理設(shè)計模式

動態(tài)代理設(shè)計模式:為所有功能一致的業(yè)務(wù)操作接口提供統(tǒng)一的代理處理操作

代理設(shè)計模式的核心是有真實業(yè)務(wù)實現(xiàn)類與代理業(yè)務(wù)實現(xiàn)類,代理類會完成比真實業(yè)務(wù)更多的處理邏輯。

傳統(tǒng)代理設(shè)計模式的弊端:所有的代理設(shè)計模式如果按照設(shè)計要求來講,必須是基于接口的設(shè)計。而靜態(tài)代理設(shè)計的特點在于:一個代理類只為一個接口服務(wù)。這也是問題所在。

2.動態(tài)代理類綁定真實對象

java提供的動態(tài)代理實現(xiàn)

//主體接口
interface ISubject{
    public void eat(String food,int num);
} 
//真實操作類
class Subject implements ISubject{ 
    @Override
    public void eat(String food, int num) {
        System.out.println("吃了"+num+"份"+food);
    }
}
//動態(tài)代理類[偽代理],想使用動態(tài)代理必須實現(xiàn)此接口
class ProxySubject implements InvocationHandler{ 
    private Object target; 
    //動態(tài)代理綁定真實業(yè)務(wù)對象 返回動態(tài)代理對象
    public Object bind(Object target){
        this.target = target;
        return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
    } 
    public void eatParpre(){
        System.out.println("準備食物");
    } 
    public void eatClear(){
        System.out.println("吃完啦,刷盤子");
    } 
    //Spring的Aop核心就是使用的動態(tài)代理
    //method存儲的是真實業(yè)務(wù)對象的方法對象[eat方法對象]
    //args參數(shù) 此處應(yīng)該是我傳遞的 "雞腿", 20 看下圖
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        this.eatParpre();
        //使用反射調(diào)用核心業(yè)務(wù)方法
        Object ret = method.invoke(target, args);
        this.eatClear();
        return ret;
    } 
} 
public class ProxyTest { 
    public static void main(String[] args) {
        //調(diào)用
        ISubject subject = (ISubject)new ProxySubject().bind(new Subject());
        //subject調(diào)用eat的時候會觸發(fā)代理對象調(diào)用invoke方法,在invoke方法里使用反射調(diào)用真實業(yè)務(wù)方法
        subject.eat("雞腿", 20);
    }
} 
運行結(jié)果:
準備食物
吃了20份雞腿
吃完啦,刷盤子

例子場景:打架

如:

桃花島比武搶親之戰(zhàn) —— 郭靖與歐陽克

華山論劍正邪之戰(zhàn) —— 北丐洪七公和西毒歐陽峰

小朋友夢想之戰(zhàn) —— 奧特曼與鎧甲勇士

這些戰(zhàn)斗之中,都要打架,但是打架之前需要有一些前期準備,打架(實戰(zhàn))工作由目標對象實現(xiàn),而前期的準備(練功)工作則由代理對象實現(xiàn)。

以上就是動力節(jié)點小編介紹的"動態(tài)代理設(shè)計模式",希望對大家有幫助,想了解更多可查看Java設(shè)計模式。動力節(jié)點在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲精品不卡视频 | 国产伦精品一区二区免费 | 欧美成人免费高清网站 | 狠色狠狠色狠狠狠色综合久久 | 四虎最新紧急入口 | 久久免费看| 一 级做人爱全视频在线看 一a级毛片 | 国产精品久久久久国产精品三级 | 2020国产免费久久精品99 | 鲁丝一区| 一道本不卡免费视频 | 午夜精品久久久久久99热 | 国产欧美另类 | 4虎永免费最新永久免费地址 | 久久婷婷国产一区二区三区 | 国产草草视频 | 天天色天天舔 | 欧美精品一区在线看 | 欧美色操| 中文字幕在线精品不卡 | 青草资源站 | 高清一区二区亚洲欧美日韩 | 国产日产欧美精品 | 看全色黄大色大片免费久久久 | 在线视频a| 久久精品国产久金国产思思 | 日韩亚洲综合精品国产 | 国自产拍在线天天更新2019 | 黄色在线免费观看网站 | 一区二区三区四区国产精品 | 日本xoxo在线观看免费 | 爱爱99 | 五月婷婷免费视频 | 中文伊人 | 亚洲一成人毛片 | 久久久久欧美激情 | 在线观看精品91老司机 | 日韩国产精品欧美一区二区 | 久草在在线视频 | 欧美高清成人 | 精品一久久香蕉国产线看观看下 |