国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

結(jié)構(gòu)型-代理模式(Proxy Pattern)

這篇具有很好參考價(jià)值的文章主要介紹了結(jié)構(gòu)型-代理模式(Proxy Pattern)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

背景

代理模式和適配器模式有什么區(qū)別?下面用兩個(gè)示例來(lái)說(shuō)明

適配器模式:假設(shè)你在家里有一個(gè)電源插座,但是你的筆記本電腦的電源線的插頭是美國(guó)標(biāo)準(zhǔn)的,無(wú)法直接插到家里的電源插座中。這時(shí),你可以使用一個(gè)適配器來(lái)解決這個(gè)問(wèn)題。

代理模式:假設(shè)你家里有一個(gè)保姆,你不想讓保姆直接接觸你的貴重物品,但是你需要讓保姆幫你照顧這些物品。這時(shí),你可以使用一個(gè)代理來(lái)解決這個(gè)問(wèn)題。

概述

代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它使得代理對(duì)象可以控制對(duì)實(shí)際對(duì)象的訪問(wèn)。在代理模式中,代理對(duì)象通過(guò)持有對(duì)實(shí)際對(duì)象的引用,來(lái)代替實(shí)際對(duì)象進(jìn)行操作。

代理對(duì)象對(duì)客戶端隱藏了實(shí)際對(duì)象的細(xì)節(jié),并可以在調(diào)用實(shí)際對(duì)象之前或之后執(zhí)行一些額外的操作,如權(quán)限驗(yàn)證、緩存數(shù)據(jù)、對(duì)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)等。

示例一

以保姆保管貴重物品為例。

定義一個(gè)?Nanny?接口,表示保姆的行為:

public interface Nanny {
    void takeCareOfValuables();
}

創(chuàng)建一個(gè)具體的?NannyImpl?類來(lái)實(shí)現(xiàn)?Nanny?接口,表示真正的保姆:

public class NannyImpl implements Nanny {
    @Override
    public void takeCareOfValuables() {
        System.out.println("保姆正在照顧貴重物品");
    }
}

創(chuàng)建一個(gè)代理類?NannyProxy?來(lái)控制對(duì)保姆的訪問(wèn),并在訪問(wèn)時(shí)添加額外的邏輯。例如,我們可以在保姆訪問(wèn)貴重物品之前,先記錄下保姆的行為:

public class NannyProxy implements Nanny {
    private Nanny nanny;

    public NannyProxy(Nanny nanny) {
        this.nanny = nanny;
    }

    @Override
    public void takeCareOfValuables() {
        System.out.println("代理保姆正在記錄行為");
        nanny.takeCareOfValuables();
    }
}

在客戶端代碼中使用代理模式來(lái)控制對(duì)保姆的訪問(wèn):

public class Main {
    public static void main(String[] args) {
        // 創(chuàng)建真正的保姆對(duì)象
        Nanny nanny = new NannyImpl();

        // 創(chuàng)建代理保姆對(duì)象
        Nanny proxy = new NannyProxy(nanny);

        // 通過(guò)代理保姆來(lái)訪問(wèn)貴重物品
        proxy.takeCareOfValuables();
    }
}

運(yùn)行結(jié)果:

代理保姆正在記錄行為
保姆正在照顧貴重物品

示例二

假設(shè)我們有一個(gè)遠(yuǎn)程文件下載器,負(fù)責(zé)從遠(yuǎn)程服務(wù)器下載文件。為了增強(qiáng)下載器功能,我們可以使用代理模式來(lái)創(chuàng)建一個(gè)下載器的代理。

首先定義一個(gè)遠(yuǎn)程文件下載器的接口:

public interface FileDownloader {
    void download(String url);
}

然后實(shí)現(xiàn)實(shí)際的遠(yuǎn)程文件下載器:

public class FileDownloaderImpl implements FileDownloader {
    @Override
    public void download(String url) {
        // 實(shí)際的下載邏輯,省略
        System.out.println("Downloading file from " + url);
    }
}

接下來(lái)定義一個(gè)文件下載代理:

public class FileDownloaderProxy implements FileDownloader {
    private FileDownloaderImpl fileDownloader;

    @Override
    public void download(String url) {
        // 在下載文件之前進(jìn)行一些額外的操作
        System.out.println("Before downloading file");
        
        // 延遲加載實(shí)際文件下載器
        if (fileDownloader == null) {
            fileDownloader = new FileDownloaderImpl();
        }
        
        // 調(diào)用實(shí)際文件下載器的方法
        fileDownloader.download(url);
        
        // 在下載文件之后進(jìn)行一些額外的操作
        System.out.println("After downloading file");
    }
}

客戶端代碼可以通過(guò)文件下載代理來(lái)下載文件,而無(wú)需直接訪問(wèn)實(shí)際下載器:

public class Client {
    public static void main(String[] args) {
        FileDownloader downloader = new FileDownloaderProxy();
        downloader.download("https://example.com/file.txt");
    }
}

運(yùn)行結(jié)果:

Before downloading file
Downloading file from https://example.com/file.txt
After downloading file?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-612917.html

到了這里,關(guān)于結(jié)構(gòu)型-代理模式(Proxy Pattern)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java 設(shè)計(jì)模式】結(jié)構(gòu)型之代理模式

    代理模式(Proxy Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它允許通過(guò)一個(gè)代理對(duì)象控制對(duì)其他對(duì)象的訪問(wèn) 。代理模式在訪問(wèn)對(duì)象時(shí)引入了一定程度的間接性,使得可以在訪問(wèn)對(duì)象前后進(jìn)行一些額外的操作。在本文中,我們將深入研究Java中代理模式的定義、結(jié)構(gòu)、使用場(chǎng)景以及如何在

    2024年01月21日
    瀏覽(23)
  • C++設(shè)計(jì)模式結(jié)構(gòu)型之代理模式

    一、概述 ?? ?代理模式是一種結(jié)構(gòu)型模式,在很多不同的場(chǎng)合具有廣泛的分類和應(yīng)用。其主要實(shí)現(xiàn)的思想是在客戶端和真正要訪問(wèn)的對(duì)象之間引入一個(gè) 代理對(duì)象(間接層),于是,以往客戶端對(duì)真正對(duì)象的訪問(wèn)現(xiàn)在變成了通過(guò)代理對(duì)象進(jìn)行訪問(wèn),代理對(duì)象在這里起到了一個(gè)

    2024年02月13日
    瀏覽(32)
  • 結(jié)構(gòu)型設(shè)計(jì)模式之代理模式【設(shè)計(jì)模式系列】

    結(jié)構(gòu)型設(shè)計(jì)模式之代理模式【設(shè)計(jì)模式系列】

    C++技能系列 Linux通信架構(gòu)系列 C++高性能優(yōu)化編程系列 深入理解軟件架構(gòu)設(shè)計(jì)系列 高級(jí)C++并發(fā)線程編程 設(shè)計(jì)模式系列 期待你的關(guān)注哦!??! 現(xiàn)在的一切都是為將來(lái)的夢(mèng)想編織翅膀,讓夢(mèng)想在現(xiàn)實(shí)中展翅高飛。 Now everything is for the future of dream weaving wings, let the dream fly in reali

    2024年02月16日
    瀏覽(16)
  • 設(shè)計(jì)模式-04.01-結(jié)構(gòu)型-代理&橋接&裝飾器&適配器

    設(shè)計(jì)模式-04.01-結(jié)構(gòu)型-代理&橋接&裝飾器&適配器

    創(chuàng)建型模式比較好理解,后面的結(jié)構(gòu)型和行為型設(shè)計(jì)模式不是那么好理解。如果遇到不好理解的設(shè)計(jì)模式,我一般會(huì)在開(kāi)頭舉比較簡(jiǎn)單的Demo案例來(lái)幫助理解。 前面幾節(jié),我們講了設(shè)計(jì)模式中的創(chuàng)建型模式。創(chuàng)建型模式主要解決對(duì)象的創(chuàng)建問(wèn)題,封裝復(fù)雜的創(chuàng)建過(guò)程,解耦對(duì)

    2024年02月09日
    瀏覽(24)
  • 設(shè)計(jì)模式- 代理模式(Proxy Pattern)結(jié)構(gòu)|原理|優(yōu)缺點(diǎn)|場(chǎng)景|示例

    ? ??????????????????????????????????設(shè)計(jì)模式(分類)????????設(shè)計(jì)模式(六大原則)? ? ? ? 創(chuàng)建型(5種) ????????工廠方法?????????抽象工廠模式????????單例模式????????建造者模式????????原型模式 ? ? 結(jié)構(gòu)型(7種) ?????

    2024年04月24日
    瀏覽(28)
  • 結(jié)構(gòu)型模式(Structural Pattern)

    模式介紹 結(jié)構(gòu)型模式(Structural Pattern)的主要目的就是 將不同的類和對(duì)象組合在一起,形成更大或者更復(fù)雜的結(jié)構(gòu)體 。該模式并不是簡(jiǎn)單地將這些類或?qū)ο髷[放在一起,而是要 提供它們之間的關(guān)聯(lián)方式 。不同的結(jié)構(gòu)型模式從不同的角度來(lái)組合類或?qū)ο?,它們盡可能滿足各

    2024年02月03日
    瀏覽(18)
  • (二)結(jié)構(gòu)型模式:4、組合模式(Composite Pattern)(C++實(shí)例)

    (二)結(jié)構(gòu)型模式:4、組合模式(Composite Pattern)(C++實(shí)例)

    目錄 1、組合模式(Composite Pattern)含義 2、組合模式應(yīng)用場(chǎng)景 3、組合模式的優(yōu)缺點(diǎn) 4、組合模式的UML圖學(xué)習(xí) 5、C++實(shí)現(xiàn)組合模式的簡(jiǎn)單示例(公司的OA系統(tǒng)) 1、組合模式(Composite Pattern)含義 組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對(duì)象當(dāng)作一個(gè)

    2024年02月12日
    瀏覽(19)
  • (二)結(jié)構(gòu)型模式:5、裝飾器模式(Decorator Pattern)(C++實(shí)例)

    (二)結(jié)構(gòu)型模式:5、裝飾器模式(Decorator Pattern)(C++實(shí)例)

    目錄 1、裝飾器模式(Decorator Pattern)含義 2、裝飾器模式的UML圖學(xué)習(xí) 3、裝飾器模式的應(yīng)用場(chǎng)景 4、裝飾器模式的優(yōu)缺點(diǎn) 5、C++實(shí)現(xiàn)裝飾器模式的簡(jiǎn)單實(shí)例 1、裝飾器模式(Decorator Pattern)含義 裝飾模式(Decorator),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外地職責(zé),就增加功能來(lái)說(shuō),裝

    2024年02月12日
    瀏覽(23)
  • 設(shè)計(jì)模式--------結(jié)構(gòu)型模式

    設(shè)計(jì)模式--------結(jié)構(gòu)型模式

    結(jié)構(gòu)型模式描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu)。它分為類結(jié)構(gòu)型模式和對(duì)象結(jié)構(gòu)型模式,前者采用繼承機(jī)制來(lái)組織接口和類,后者釆用組合或聚合來(lái)組合對(duì)象。 由于組合關(guān)系或聚合關(guān)系比繼承關(guān)系耦合度低,滿足“合成復(fù)用原則”,所以對(duì)象結(jié)構(gòu)型模式比類結(jié)構(gòu)

    2024年02月13日
    瀏覽(30)
  • 設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    設(shè)計(jì)模式結(jié)構(gòu)型——外觀模式

    目錄 什么是外觀模式 外觀模式的實(shí)現(xiàn) 外觀模式角色 外觀模式舉例 外觀模式類圖 外觀模式代碼實(shí)現(xiàn) 外觀模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 注意事項(xiàng) 應(yīng)用場(chǎng)景 總結(jié) ????????外觀模式(Facade Pattern):又叫作門面模式,歸屬于結(jié)構(gòu)型模式。外觀模式定義了提供了定義了一個(gè)統(tǒng)一的高層

    2024年02月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包