最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過案例理解Spring中靜態(tài)代理

 更新時間:2025年12月09日 14:15:47   作者:qq_54867493  
文章介紹了靜態(tài)代理和動態(tài)代理的概念,通過中介租房案例展示了代理模式的實現(xiàn),靜態(tài)代理中,每個真實對象都有一個對應的代理類,這種方式在真實對象較多時會顯得繁瑣,動態(tài)代理則通過代理工具類來處理,避免了為每個真實對象編寫代理類的問題,感興趣的朋友跟隨小編一起看看吧

參考http://m.fzitv.net/program/3545702mr.htm

無論是靜態(tài)代理還是動態(tài)代理,都有四大角色:

  1. 抽象角色:一般會使用接口或者抽象類來解決
  2. 真實角色:被代理的角色
  3. 代理角色:代理真實角色,一般會做一些附屬操作
  4. 客戶:訪問代理對象的人

中介租房案例

首先,定義一個接口(Rent),房東類(Host)實現(xiàn)該接口,并輸出自己房子的相關信息。

//租房
public interface Rent {
    public  void rent();
}
//房東
public class Host implements Rent{
    public void rent() {
        System.out.println("我的房子是藍色的,準備出租房子!");
    }
}

房東將房子交給中介,此時的中介相當于代理類(Proxy)

代理類在不修改被代理對象功能 (Host類的rent方法) 的基礎上,可以對代理類進行擴展(增加seeHouse、fare方法)

public class Proxy implements Rent{
    private Host host;
    public Proxy(){ }
    public Proxy(Host host){
        this.host=host;
    }
    public void rent() {
        seeHouse();
        host.rent();
        fare();
    }
    //看房
    public void seeHouse(){
        System.out.println("中介帶你看房子");
    }
    }
    //收費
    public void fare(){
        System.out.println("收中介費");
    }
}

客戶購房不用面對房東,只需與中介對接。

public class Client {
    public static void main(String[] args) {
        Host host=new Host(); //房東要出租房子
        //代理,中介幫房東租房子,但是代理角色一般會有一些附屬操作
        Proxy proxy=new Proxy(host);
        //客戶不用面對房東,直接找中介租房即可
        proxy.rent();
    }
}

上述代碼就實現(xiàn)了靜態(tài)代理,客戶只需面向代理類操作即可。

運行截圖

缺點:靜態(tài)代理中,每個真實對象都會擁有一個代理類,這樣將會十分繁瑣。

如果采用靜態(tài)代理,當有100個房東時,我們將要編寫100個代理類,這種處理方法明顯不妥。因此我們可以使用動態(tài)代理,編寫一個代理工具類,該類并未指明代理的真實對象是哪一個。

public class DynamicProxy {
    public static Object getProxyInstance(Object target){
        return Proxy.newProxyInstance(
            target.getClass().getClassLoader(),
            target.getClass().getInterfaces(),
            (proxy, method, args)->{
                Object result = method.invoke(target,args);
                return result;
            }
        );
    }
}
public class Client {
    public static void main(String[] args) {
        Rent proxyInstance1 = (Rent) DynamicProxy.getProxyInstance(
                new Host1());
        proxyInstance1.rent();
        Rent proxyInstance2 = (Rent)DynamicProxy.getProxyInstance(
                new Host2());
        proxyInstance2.rent();
    }
}

到此這篇關于通過案例理解Spring中靜態(tài)代理的文章就介紹到這了,更多相關Spring靜態(tài)代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MyBatis執(zhí)行SQL的兩種方式小結

    MyBatis執(zhí)行SQL的兩種方式小結

    本文主要介紹了MyBatis執(zhí)行SQL的兩種方式小結,主要包括SqlSession 發(fā)送SQL和SqlSession獲取Mapper接口,通過Mapper接口發(fā)送SQL,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Xml中使用foreach遍歷對象實現(xiàn)代碼

    Xml中使用foreach遍歷對象實現(xiàn)代碼

    這篇文章主要介紹了Xml中使用foreach遍歷對象實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 基于Java編寫一個PDF與Word文件轉(zhuǎn)換工具

    基于Java編寫一個PDF與Word文件轉(zhuǎn)換工具

    前段時間一直使用到word文檔轉(zhuǎn)pdf或者pdf轉(zhuǎn)word,尋思著用Java應該是可以實現(xiàn)的,于是花了點時間寫了個文件轉(zhuǎn)換工具,感興趣的可以了解一下
    2023-01-01
  • 解析Java的可變長參數(shù)列表及其使用時的注意點

    解析Java的可變長參數(shù)列表及其使用時的注意點

    這篇文章主要介紹了解析Java的可變參數(shù)列表及其使用時的注意點,注意可變參數(shù)必須位于最后一項,需要的朋友可以參考下
    2016-03-03
  • Java Spring三級緩存

    Java Spring三級緩存

    三級緩存就是在Bean生成流程中保存Bean對象三種形態(tài)的三個Map集合,這個三級緩存就是為了解決循環(huán)依賴,本文給大家介紹Java Spring三級緩存,感興趣的朋友一起看看吧
    2025-06-06
  • MyEclipse+Tomcat配置詳解(圖文)

    MyEclipse+Tomcat配置詳解(圖文)

    這篇文章主要介紹了MyEclipse+Tomcat配置詳解(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • SpringBoot實現(xiàn)不同用戶不同訪問權限的示例代碼

    SpringBoot實現(xiàn)不同用戶不同訪問權限的示例代碼

    這篇文章主要介紹了在SpringBoot中使用SpringSecurity實現(xiàn)基于角色的權限控制,涵蓋依賴添加、數(shù)據(jù)庫設計、實體類與Repository接口、UserDetailsService實現(xiàn)、安全配置、控制器創(chuàng)建及測試數(shù)據(jù)準備,并提及@PreAuthorize注解與角色繼承配置,需要的朋友可以參考下
    2025-07-07
  • LeetCode程序員面試題之無重復字符的最長子串

    LeetCode程序員面試題之無重復字符的最長子串

    Java計算無重復字符的最長子串是一種常見的字符串處理算法,它的目的是找出一個字符串中無重復字符的最長子串。該算法可以很好地解決一些字符串處理問題,比如尋找字符串中重復字符的位置,以及計算字符串中無重復字符的最長子串的長度。
    2023-02-02
  • springboot訪問請求404的原因及解決辦法

    springboot訪問請求404的原因及解決辦法

    在使用Spring Boot開發(fā)應用程序時,有時可能會遇到訪問請求出現(xiàn)404錯誤的情況,即請求的資源未找到,這篇文章主要給大家介紹了關于springboot訪問請求404的原因及解決辦法,需要的朋友可以參考下
    2023-09-09
  • Springboot+MultipartFile實現(xiàn)單文件,多文件批量上傳過程

    Springboot+MultipartFile實現(xiàn)單文件,多文件批量上傳過程

    在Spring?Boot中,若需Swagger顯示文件上傳按鈕,需使用@Consumes注解指定Content-Type(如multipart/form-data),以告知接口接受文件類型,此注解幫助Swagger正確識別請求參數(shù),確保功能展示完整
    2025-07-07

最新評論

江山市| 萍乡市| 德惠市| 夏邑县| 华容县| 周口市| 高尔夫| 乌兰浩特市| 台东县| 原阳县| 札达县| 梅州市| 梓潼县| 若尔盖县| 临夏县| 浦江县| 云南省| 静安区| 平江县| 新闻| 壶关县| 安康市| 崇左市| 济宁市| 宁阳县| 宜君县| 饶河县| 广南县| 陈巴尔虎旗| 邢台县| 九龙城区| 樟树市| 宁武县| 余姚市| 高雄市| 科技| 内乡县| 齐河县| 武鸣县| 邹平县| 会东县|