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

代理模式【Proxy Pattern】

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

什么是代理模式呢?我很忙,忙的沒空理你,那你要找我呢就先找我的代理人吧,那代理人總要知道
被代理人能做哪些事情不能做哪些事情吧,那就是兩個(gè)人具備同一個(gè)接口,代理人雖然不能干活,但是被
代理的人能干活呀。
舉例子:
比如西門慶找潘金蓮,那潘金蓮不好意思答復(fù)呀,咋辦,找那個(gè)王婆做代理
類圖如下
代理模式【Proxy Pattern】,設(shè)計(jì)模式,代理模式

(1).靜態(tài)代理

  1. 定義同一種類型的接口
  2. 定義同一種類型接口的實(shí)現(xiàn)
  3. 定義代理類

?1.先定義一種類型的女人:

package proxy;

/**
 * * 定義一種類型的女人,王婆和潘金蓮都屬于這個(gè)類型的女人
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/14 14:43
 */
public interface KindWomen {
    /**
     * 拋媚眼
     */
    public void makeEyesWithMan();

    /**
     * 開心約會(huì)
     */
    public void happyWithMan();

}

2.實(shí)現(xiàn)接口

package proxy;

/**
 * 潘金蓮
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/14 14:45
 */
public class PanJinLian implements KindWomen {
    @Override
    public void makeEyesWithMan() {
        System.out.println("潘金蓮拋媚眼");
    }

    @Override
    public void happyWithMan() {
        System.out.println("潘金蓮和男人開心約會(huì)");
    }
}

3.定義代理類

package proxy;

/**
 * 代理類
 * 王婆(幫忙給西門慶代理)
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/14 14:46
 */
public class WangPo implements KindWomen {
    private KindWomen kindWomen;

    /**
     * 王婆默認(rèn)就是潘金蓮的代理
     */
    public WangPo() {
        this.kindWomen = new PanJinLian();
    }

    /**
     * 王婆可以代理這個(gè)類型的所有人
     *
     * @param kindWomen
     */
    public WangPo(KindWomen kindWomen) {
        this.kindWomen = kindWomen;
    }

    @Override
    public void makeEyesWithMan() {
        //實(shí)際做事的是代理類
        this.kindWomen.makeEyesWithMan();
    }

    @Override
    public void happyWithMan() {
        //實(shí)際做事的是代理類
        this.kindWomen.happyWithMan();
    }
}

4.找到代理類進(jìn)行調(diào)用

package proxy;

/**
 * 西門慶
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/14 14:50
 */
public class XiMenQing {
    public static void main(String[] args) {
        System.out.println("(1)靜態(tài)代理******************");
        //西門慶找到王婆,然后王婆就作為代理,幫忙安排了和潘金蓮的約會(huì)
        WangPo wangPo = new WangPo();
        //王婆默認(rèn)的代理就是潘金蓮
        wangPo.makeEyesWithMan();
        wangPo.happyWithMan();

        //傳參數(shù)執(zhí)行
        WangPo wangPo2 = new WangPo(new PanJinLian());
        wangPo2.makeEyesWithMan();
        wangPo2.happyWithMan();



        System.out.println("(2)動(dòng)態(tài)代理******************");
        KindWomen kindWomen = (KindWomen)new ProxyFactory(new PanJinLian()).getProxyInstance();
        System.out.println("生成的代理對(duì)象"+kindWomen.getClass());
        kindWomen.makeEyesWithMan();
        kindWomen.happyWithMan();



    }
}

(2).動(dòng)態(tài)代理

package proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/14 14:58
 */
public class ProxyFactory {
    //維護(hù)一個(gè)目標(biāo)對(duì)象 , Object
    private Object target;
    //構(gòu)造器 , 對(duì)target 進(jìn)行初始化
    public ProxyFactory(Object target) {
        this.target = target;
    }
    //動(dòng)態(tài)生成一個(gè)代理對(duì)象
    public Object getProxyInstance() {
        return Proxy.newProxyInstance(target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                new InvocationHandler() { //匿名類重寫invoke方法
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        System.out.println("動(dòng)態(tài)代理開始");
                        Object returnVal = method.invoke(target, args);//反射機(jī)制調(diào)用目標(biāo)對(duì)象的方法
                        System.out.println("動(dòng)態(tài)代理結(jié)束");
                        return returnVal;
                    }
                });
    }
}

執(zhí)行結(jié)果如下:

代理模式【Proxy Pattern】,設(shè)計(jì)模式,代理模式文章來源地址http://www.zghlxwxcb.cn/news/detail-652040.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)文章

  • 設(shè)計(jì)模式之代理模式(Proxy)的C++實(shí)現(xiàn)

    設(shè)計(jì)模式之代理模式(Proxy)的C++實(shí)現(xiàn)

    在組件的開發(fā)過程中,有些對(duì)象由于某種原因(比如對(duì)象創(chuàng)建的開銷很大,或者對(duì)象的一些操作需要做安全控制,或者需要進(jìn)程外的訪問等),會(huì)使Client使用者在操作這類對(duì)象時(shí)可能會(huì)存在問題:(1)使用者直接訪問這種對(duì)象會(huì)使系統(tǒng)帶來很多麻煩。(2)或者使用者使不能

    2024年02月12日
    瀏覽(19)
  • 設(shè)計(jì)模式——1_6 代理(Proxy)

    設(shè)計(jì)模式——1_6 代理(Proxy)

    詩有可解不可解,若鏡花水月勿泥其跡可也 —— 謝榛 為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問 某天,你突發(fā)奇想,想做一個(gè)可以展示指定文件夾內(nèi)所有圖片的桌面應(yīng)用。這個(gè)應(yīng)用很簡單,遍歷文件夾,發(fā)現(xiàn)圖片文件,把圖片加載到GUI上的圖片列表里,顯示圖片名和

    2024年01月25日
    瀏覽(18)
  • 設(shè)計(jì)模式之代理模式(Proxy),以C++為例,實(shí)現(xiàn)遠(yuǎn)程代理、虛擬代理、保護(hù)代理等。

    設(shè)計(jì)模式之代理模式(Proxy),以C++為例,實(shí)現(xiàn)遠(yuǎn)程代理、虛擬代理、保護(hù)代理等。

    ? ? ? ? 兄弟姐妹們好,又是好久沒有更新了,今天給大家簡單介紹代理模式,一個(gè)很簡單的設(shè)計(jì)模式,旨在不改變?cè)瓕?duì)象的情況下通過代理對(duì)象來控制對(duì)原對(duì)象的訪問。代理模式根據(jù)具體情況還可以分為遠(yuǎn)程代理、虛擬代理、保護(hù)代理等,下面來介紹一下。 目錄 ?一、代理

    2023年04月09日
    瀏覽(29)
  • 【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——代理模式Proxy(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——代理模式Proxy(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    代理模式 為一個(gè)對(duì)象提供一個(gè)代理對(duì)象,以控制對(duì)這個(gè)對(duì)象的訪問 。即通過代理對(duì)象訪問目標(biāo)對(duì)象,這樣做的好處是:可以在不修改目標(biāo)對(duì)象代碼的基礎(chǔ)上,增強(qiáng)額外的功能操作,即擴(kuò)展目標(biāo)對(duì)象的功能 被代理的對(duì)象可以是遠(yuǎn)程對(duì)象、創(chuàng)建開銷大的對(duì)象或需要安全控制的對(duì)

    2024年02月14日
    瀏覽(59)
  • 代理模式【Proxy Pattern】

    代理模式【Proxy Pattern】

    什么是代理模式呢?我很忙,忙的沒空理你,那你要找我呢就先找我的代理人吧,那代理人總要知道 被代理人能做哪些事情不能做哪些事情吧,那就是兩個(gè)人具備同一個(gè)接口,代理人雖然不能干活,但是被 代理的人能干活呀。 舉例子: 比如西門慶找潘金蓮,那潘金蓮不好意

    2024年02月12日
    瀏覽(17)
  • 結(jié)構(gòu)型-代理模式(Proxy Pattern)

    代理模式和適配器模式有什么區(qū)別?下面用兩個(gè)示例來說明 適配器模式:假設(shè)你在家里有一個(gè)電源插座,但是你的筆記本電腦的電源線的插頭是美國標(biāo)準(zhǔn)的,無法直接插到家里的電源插座中。這時(shí),你可以使用一個(gè)適配器來解決這個(gè)問題。 代理模式:假設(shè)你家里有一個(gè)保姆

    2024年02月15日
    瀏覽(23)
  • (二)結(jié)構(gòu)型模式:8、代理模式(Proxy Pattern)(C++示例)

    (二)結(jié)構(gòu)型模式:8、代理模式(Proxy Pattern)(C++示例)

    目錄 1、代理模式(Proxy Pattern)含義 2、代理模式的UML圖學(xué)習(xí) 3、代理模式的應(yīng)用場景? 4、代理模式的優(yōu)缺點(diǎn) 5、C++實(shí)現(xiàn)代理模式的實(shí)例 1、代理模式(Proxy Pattern)含義 代理模式(Proxy),為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。 代理模式(Proxy Pattern)是一種結(jié)構(gòu)

    2024年02月12日
    瀏覽(18)
  • 設(shè)計(jì)模式--工廠模式(Factory Pattern)

    設(shè)計(jì)模式--工廠模式(Factory Pattern)

    工廠模式(Factory Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對(duì)象的接口,但是將對(duì)象的實(shí)例化過程推遲到子類中。工廠模式允許通過調(diào)用一個(gè)共同的接口方法來創(chuàng)建不同類型的對(duì)象,而無需暴露對(duì)象的實(shí)例化邏輯。 工廠模式的主要目標(biāo)是解耦對(duì)象的創(chuàng)建和使用,以及

    2024年02月10日
    瀏覽(31)
  • 【設(shè)計(jì)模式--原型模式(Prototype Pattern)

    【設(shè)計(jì)模式--原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它的主要目的是通過復(fù)制現(xiàn)有對(duì)象來創(chuàng)建新的對(duì)象,而無需顯式地使用構(gòu)造函數(shù)或工廠方法。這種模式允許我們創(chuàng)建一個(gè)可定制的原型對(duì)象,然后通過復(fù)制它來創(chuàng)建新的對(duì)象,從而避免了重復(fù)構(gòu)建相似的對(duì)象。 在原型模式中

    2024年02月11日
    瀏覽(22)
  • 設(shè)計(jì)模式——狀態(tài)模式(State Pattern)

    對(duì)象的行為依賴于它的狀態(tài)(屬性),并且可以根據(jù)它的狀態(tài)改變而改變它的相關(guān)行為。 1.1、定義狀態(tài)接口 1.2、定義開始狀態(tài)實(shí)現(xiàn)類 1.3、定義停止?fàn)顟B(tài)實(shí)現(xiàn)類 1.4、創(chuàng)建 Context 類 1.5、使用 Context 來查看當(dāng)狀態(tài) State 改變時(shí)的行為變化。 創(chuàng)建型模式 結(jié)構(gòu)型模式 1、設(shè)計(jì)模式——

    2024年02月06日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包