在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

設計模式之代理模式:武器附魔之道

京東云 ? 來源:京東保險 孫昊宇 ? 作者:京東保險 孫昊宇 ? 2025-01-24 11:45 ? 次閱讀

作者:京東保險 孫昊宇

大家好,今天我們聊聊設計模式中的代理模式。作為一種經(jīng)典設計模式,它的應用極為廣泛。不論你是剛剛入門,還是已經(jīng)熟悉設計模式,相信這篇文章都會讓你有所收獲。

一、引子:叫個代駕

讓我們從一個引子開始:司機和代駕。「私家車司機」和「代駕」是什么關系?很簡單,「私家車司機」是客戶,「代駕」負責提供服務,幫他們開車。

不同點: 「私家車司機」有自己的車,他們可能自己開車,也可能找代駕開車;

「代駕」沒有自己的車,但他們會接到代駕訂單,從而開「私家車司機」的車。

相同點: 他們都會開車,有駕照。換句話說,他們都屬于「司機」。

說到這里,我想他們的關系就很清楚了:「司機」是「私家車司機」和「代駕」的父類。雖然都會開車,但他們對“開車”這個行為有不同的實現(xiàn)。

讓我們把這三個類的關系表示出來。首先定義一個抽象類「司機」,就叫Driver好了:

@Data
public abstract class Driver {

    String name;

    abstract void driveCar();
}

我們要求每個司機都有一個名字,且都必須會開車。

接下來看看「私家車司機」,CommonDriver類:

@Data
public class CommonDriver extends Driver {

    CommonDriver(String name) {
        this.name = name;
    }

    @Override
    public void driveCar() {
        System.out.println(this.getName() + "的汽車正在行駛...");
    }
}

也很簡單,每次開車的時候打印一行日志即可。最后看看「代駕」,就叫ProxyDriver吧:

@Data
public class ProxyDriver extends Driver {

    private Driver realDriver;

    ProxyDriver(String name, Driver realDriver) {
        this.name = name;
        this.realDriver = realDriver;
    }

    @Override
    void driveCar() {
        System.out.printf("代駕「%s」正在為%s服務...n", this.getName(), this.getRealDriver().getName());
        this.realDriver.driveCar();
    }
}

我們要求每個代駕都要有一個服務的客戶,也就是被代理的司機。我們將這位被代理的司機——realDriver作為了代駕類的私有變量存起來。當代駕在開車時,他實際上開的是客戶的車。因此,他直接去調(diào)用realDriver的開車方法即可。

三個類定義好了,讓我們先創(chuàng)建一個「私家車司機」——小張,讓小張自己開車;再幫他叫一個「代駕」——就叫他小代吧,讓小代幫他開車:

public class Main {
    public static void main(String[] args) {
        CommonDriver zhang = new CommonDriver("小張");
        zhang.driveCar();
        ProxyDriver proxyDriver = new ProxyDriver("小代", zhang);
        proxyDriver.driveCar();
    }
}

運行一下:

小張的汽車正在行駛... 代駕小代正在為小張服務... 小張的汽車正在行駛...

結果符合預期:不管是誰在開車,結果都是一樣的,開的都是小張的汽車。

二、代理模式:武器附魔之道

代理模式的定義

以上例子展示了一個代理模式的基本實現(xiàn)。代理模式(Proxy Pattern) 的定義是:使用代理以代替對真實對象的訪問。 它屬于一種結構型設計模式。

例子中的「司機」、「私家車司機」和「代駕」三個角色,分別對應了代理模式中的三個基本元素:

「私家車司機」——真實主題: 被代理的角色,是業(yè)務邏輯的具體執(zhí)行者。

「代駕」——代理主題: 負責代理真實主題,所有對其業(yè)務方法的調(diào)用,都會被委托給其真實主題實現(xiàn)。

「司機」——抽象主題: 可以是接口,也可以是抽象類。代理主題和真實主題都會去實現(xiàn)/繼承同一個抽象主題。

優(yōu)點及應用

為真實的對象設置一個代理,可以帶來什么好處?在哪些應用場景下,我們需要用到代理模式?

要回答這個問題,我們不妨想想代理的特點:間接訪問。沒錯,代理模式的優(yōu)點就在于通過代理間接訪問真實對象。通過間接訪問,我們就可以讓代理做許多中間操作,通過這些中間操作,我們就可以在不修改真實對象的前提下,實現(xiàn)功能增強。

我的理解:如果把真實主題比做一把**「寶劍」,專門用來處理核心邏輯**,那么就可以將它的代理比作**「附魔」,用來給真實主題提供一些強化功能**,附魔的種類就很多啦:火焰

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代理模式
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1790
收藏 人收藏

    評論

    相關推薦

    CKS32F4xx系列MCU的低功耗模式睡眠模式

    本課講為大家講解CKS32F4xx系列產(chǎn)品的低功耗模式睡眠(Sleep)模式。MCU為滿足某些應用場景:如小型化低容量設備,長期監(jiān)測設備等,低功耗應運而生,其中根據(jù)需求,用戶可以選擇睡眠模式
    發(fā)表于 06-26 10:02 ?681次閱讀
    CKS32F4xx系列MCU的低功耗<b class='flag-5'>模式</b><b class='flag-5'>之</b>睡眠<b class='flag-5'>模式</b>

    適配器模式代理模式的區(qū)別

      代理模式  組成:  抽象角色:通過接口或抽象類聲明真實角色實現(xiàn)的業(yè)務方法。  代理角色:實現(xiàn)抽象角色,是真實角色的代理,通過真實角色的業(yè)務邏輯方法來實現(xiàn)抽象方法,并可以附加自己的
    發(fā)表于 10-22 15:17

    Modbus ASCII 模式通訊程序

    C語言編寫的臺達變頻器Modbus ASCII 模式通訊程序
    發(fā)表于 12-02 10:25 ?6次下載

    適配器模式、裝飾器模式代理模式的區(qū)別

    適配器模式、裝飾器模式代理模式都屬于設計模式中的結構型模式,結構型設計
    發(fā)表于 10-18 15:53 ?1.7w次閱讀
    適配器<b class='flag-5'>模式</b>、裝飾器<b class='flag-5'>模式</b>、<b class='flag-5'>代理</b><b class='flag-5'>模式</b>的區(qū)別

    基于RSM代理模型的武器裝備體系優(yōu)化算法

    Methodology),代理模型的武器裝備體系優(yōu)化算法。其中,選用響應面模型作為代理模型,通過均勻設計方法生成初始樣本點,運用最小化響應面法進行代理模型更新,采用梯度下降法進行迭代
    發(fā)表于 12-12 15:36 ?0次下載

    適配器模式代理模式的區(qū)別

    適配器模式:適配器模式有時候也稱包裝樣式或者包裝。將一個類的接口轉(zhuǎn)接成用戶所期待的。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
    發(fā)表于 01-12 11:56 ?5299次閱讀
    適配器<b class='flag-5'>模式</b>和<b class='flag-5'>代理</b><b class='flag-5'>模式</b>的區(qū)別

    C語言設計模式的程序資料合集

    本文檔的主要內(nèi)容詳細介紹的是C語言設計模式的程序資料合集包括了:C語言設計模式_繼承-多態(tài)-封裝,C語言設計模式_單件
    發(fā)表于 11-16 08:00 ?5次下載

    嵌入式軟件設計設計模式

    文章目錄前言1.設計模式適配器模式2.設計模式單例模式3.設計
    發(fā)表于 10-21 11:07 ?9次下載
    嵌入式軟件設計<b class='flag-5'>之</b>設計<b class='flag-5'>模式</b>

    設計模式結構型模式

    結構型模式一、適配器模式(一)定義:適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁,它結合了兩個獨立接口的功能。這種模式涉及到一個單一的類,該類負責加入獨
    發(fā)表于 11-06 17:51 ?1次下載
    設計<b class='flag-5'>模式</b><b class='flag-5'>之</b>結構型<b class='flag-5'>模式</b>

    STM32低功耗模式待機模式

    上周完成了一個小項目,項目涉及到stm32的低功耗的待機模式,特在此記錄下32的待機模式。 芯片:STM32f030F4 庫:HAL庫 喚醒方式:用RTC和PA0的上升沿喚醒先來看下低功耗模式
    發(fā)表于 12-07 16:21 ?8次下載
    STM32低功耗<b class='flag-5'>模式</b><b class='flag-5'>之</b>待機<b class='flag-5'>模式</b>

    GoF設計模式代理模式

    它是一個使用率非常高的設計模式,在現(xiàn)實生活中,也是很常見。比如,演唱會門票黃牛。假設你需要看一場演唱會,但官網(wǎng)上門票已經(jīng)售罄,于是就當天到現(xiàn)場通過黃牛高價買了一張。在這個例子中,黃牛就相當于演唱會門票的代理,在正式渠道無法購買門票的情況下,你通過
    的頭像 發(fā)表于 10-17 09:45 ?984次閱讀

    設計模式結構性:代理模式

    代理模式(Proxy Pattern)中,一個類代表另一個類的功能。這種類型的設計模式屬于結構型模式
    的頭像 發(fā)表于 06-09 15:27 ?880次閱讀
    設計<b class='flag-5'>模式</b>結構性:<b class='flag-5'>代理</b><b class='flag-5'>模式</b>

    裝飾器模式代理模式的區(qū)別

    什么是裝飾器模式 裝飾器模式(Decorator Pattern): 在不改變對象自身的基礎上,在程序運行期間給對象動態(tài)的添加職責; 感覺和繼承如出一轍,不改變父類,子類可拓展功能; 優(yōu)點 裝飾類
    的頭像 發(fā)表于 10-08 14:25 ?4200次閱讀
    裝飾器<b class='flag-5'>模式</b>和<b class='flag-5'>代理</b><b class='flag-5'>模式</b>的區(qū)別

    設計模式代理模式的使用場景

    設計模式在我看來更像是一種設計思維或設計思想,它就像《孫子兵法》一樣,為你的項目工程提供方向,讓你的項目工程更加健壯、靈活,延續(xù)生命力。本文即將分享的是設計模式的其中一種:代理模式
    的頭像 發(fā)表于 10-08 14:34 ?1106次閱讀
    設計<b class='flag-5'>模式</b>中<b class='flag-5'>代理</b><b class='flag-5'>模式</b>的使用場景

    實踐GoF的23種設計模式:備忘錄模式

    相對于代理模式、工廠模式等設計模式,備忘錄模式(Memento)在我們?nèi)粘i_發(fā)中出鏡率并不高,除了應用場景的限制之外,另一個原因,可能是備忘
    的頭像 發(fā)表于 11-25 09:05 ?608次閱讀
    實踐GoF的23種設計<b class='flag-5'>模式</b>:備忘錄<b class='flag-5'>模式</b>
    主站蜘蛛池模板: 日韩毛片免费 | 边做边爱在线观看视频免费 | 欧美色图中文字幕 | 亚洲天堂首页 | 色综合色综合色综合色综合 | 天天做夜夜爱 | 日本免费在线 | 性欧美高清短视频免费 | 你懂得的在线观看免费视频 | 午夜老司机永久免费看片 | 日本一二区视频 | 亚洲黄色网址在线观看 | 欧美成人a | 日本国产中文字幕 | 高清一级片 | www五月天com | 六月色婷婷 | 亚洲开心激情网 | 在线视频午夜 | 精品国产欧美一区二区最新 | 伊人精品久久久大香线蕉99 | 好黄好硬好爽好刺激 | 狠狠干精品 | 亚洲天堂视频在线观看免费 | 特级全黄一级毛片视频 | 在线种子搜索 | 四虎精品影院永久在线播放 | 国产精品久久久久久久久免费hd | 香蕉免费在线视频 | 深夜国产成人福利在线观看女同 | 91精品久久国产青草 | 日本大黄视频 | 欧美一级欧美三级在线 | 四虎影院在线免费播放 | 久久夜色精品国产亚洲 | 狠狠丁香激情久久综合 | 狠狠色噜噜狠狠狠97影音先锋 | 永久免费在线观看 | 成人久久精品 | 黄色三级免费网站 | 男女交性永久免费视频播放 |