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

Java設(shè)計(jì)模式之代理模式--經(jīng)紀(jì)人的工作

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

前言

本文主要講述代理模式,文中使用通俗易懂的案例,使你更好的學(xué)習(xí)本章知識(shí)點(diǎn)并理解原理,做到有道無(wú)術(shù)。

一.什么是代理模式

代理模式是23種設(shè)計(jì)模式中結(jié)構(gòu)型模式的一種,它的核心是通過(guò)代理類來(lái)完成其他對(duì)象的訪問(wèn),降低訪問(wèn)者和被訪問(wèn)者的耦合度,也對(duì)功能進(jìn)行了增強(qiáng)。

二.生活中的代理模式

1.經(jīng)紀(jì)人

每個(gè)藝人都擁有自己的經(jīng)紀(jì)人,幫助他處理工作上的事情,例如幫藝人接活、商務(wù)談判、宣傳包裝等等,如果我們想聯(lián)系上哪位藝人,主要就是通過(guò)經(jīng)紀(jì)人來(lái)完成,而經(jīng)紀(jì)人就跟設(shè)計(jì)模式中的代理模式類似。

Java設(shè)計(jì)模式之代理模式--經(jīng)紀(jì)人的工作

2.房產(chǎn)中介

現(xiàn)在很多年輕人在大城市工作都是租房住的,大家現(xiàn)在購(gòu)買房子或者租房的話是不是通過(guò)房產(chǎn)中介呢,反正是通過(guò)房產(chǎn)中介找到房子的,而房產(chǎn)中介他是負(fù)責(zé)幫助房主出售或者出租房子的,通過(guò)房產(chǎn)中介我們就無(wú)需每個(gè)房子都需要通過(guò)聯(lián)系房主來(lái)獲取房源信息,大大提高了我們選房效率,而房產(chǎn)中介就跟設(shè)計(jì)模式中的代理模式類似。

Java設(shè)計(jì)模式之代理模式--經(jīng)紀(jì)人的工作

3.婚介

現(xiàn)在有很多婚介公司或者各種APP來(lái)幫助大家擴(kuò)展社交范圍,認(rèn)識(shí)更多的人,提升戀愛(ài)率和結(jié)婚率。而婚介公司或者各種交友APP就跟設(shè)計(jì)模式中的代理模式類似。

Java設(shè)計(jì)模式之代理模式--經(jīng)紀(jì)人的工作

三.代理模式的實(shí)現(xiàn)

代理模式有兩種,一種是靜態(tài)代理,一種是動(dòng)態(tài)代理

1.靜態(tài)代理

接下來(lái)就以演員和經(jīng)紀(jì)人來(lái)舉例,通過(guò)靜態(tài)代理來(lái)實(shí)現(xiàn)。先創(chuàng)建一個(gè)接口和被代理對(duì)象類演員類以及靜態(tài)代理類經(jīng)紀(jì)人類

package com.qianfeng.ran;

/*
 * @author:江帥
 *      接口
 *          人類接口
 */
public interface Human {
    void behavior();
}



/*
 * @author:江帥
 *      被代理對(duì)象類
 *              演員類
 */
class Actor implements Human{
    @Override
    public void behavior() {
        System.out.println("某某明星進(jìn)行拍戲");
    }
}



/*
 * @author:江帥
 *      靜態(tài)代理類
 *          經(jīng)紀(jì)人
 */
class Broker implements Human{
    private Human human;
    //獲取具體的明星對(duì)象
    public Broker(Human human){
        this.human = human;
    }
    @Override
    public void behavior() {
        System.out.println("接商演");
        System.out.println("安排行程");
        human.behavior();
        System.out.println("后續(xù)工作進(jìn)行");
    }
}

然后創(chuàng)建一個(gè)客戶端使用代理模式,完成通過(guò)經(jīng)紀(jì)人聯(lián)系演員讓演員拍戲,并增強(qiáng)功能

package com.qianfeng.ran;

/*
 * @author:江帥
 *          客戶端
 */
public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建明星對(duì)象
        Actor actor = new Actor();

        //創(chuàng)建經(jīng)紀(jì)人對(duì)象并傳遞明星對(duì)象
        Broker broker = new Broker(actor);
        //執(zhí)行結(jié)果:
        //接商演
        //安排行程
        //某某明星進(jìn)行拍戲
        //后續(xù)工作進(jìn)行
        broker.behavior();
    }
}

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

接下來(lái)我們以房產(chǎn)中介的來(lái)舉例,使用動(dòng)態(tài)代理來(lái)實(shí)現(xiàn)。先創(chuàng)建代理接口人類接口和被代理對(duì)象類用戶類

package com.qianfeng.ran;

/*
 * @author:江帥
 *          接口
 *              人類接口
 */
public interface Human {
    void behavior();
}



/*
 * @author:江帥
 *          被代理對(duì)象類
 *              用戶
 */
public class User implements Human{
    @Override
    public void behavior() {
        System.out.println("租房");
    }
}

再創(chuàng)建一個(gè)動(dòng)態(tài)代理類房產(chǎn)中介類

package com.qianfeng.ran;
/*
 * @author:江帥
 *         動(dòng)態(tài)代理類
 *              房產(chǎn)中介
 */
public class DynamicProxy implements InvocationHandler {
    //需要被代理的對(duì)象
    private Object obj;

    public Object newInstance(Object obj){
        this.obj = obj;
        /**
         *  第一個(gè)參數(shù)為被代理對(duì)象的類加載器
         *  第二個(gè)參數(shù)為被代理對(duì)象的接口
         *  第三個(gè)此參數(shù)為當(dāng)前對(duì)象
         */
        return Proxy.newProxyInstance(obj.getClass().getClassLoader()
                ,obj.getClass().getInterfaces(),
                this);
    }

    /**
     *  調(diào)用被代理對(duì)象的方法都會(huì)經(jīng)過(guò)該方法
     * @param proxy 代理對(duì)象的引用
     * @param method 被調(diào)用的方法對(duì)象
     * @param args  被調(diào)用方法的參數(shù)數(shù)組
     * @return		原方法的返回值
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        start();
        //調(diào)用被代理對(duì)象的方法
        Object respBean = method.invoke(obj, args);
        commit();
        return respBean;
    }

    public void start(){
        System.out.println("帶客戶看房子");
    }

    public void commit(){
        System.out.println("與客戶簽署合同");
    }
}

最后動(dòng)態(tài)代理實(shí)現(xiàn)通過(guò)房產(chǎn)中介增強(qiáng)用戶尋找房子的行為

package com.qianfeng.ran;

/*
 * @author:江帥
 *      客戶端
 */
public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建房產(chǎn)中介            --  代理對(duì)象類
        DynamicProxy proxy = new DynamicProxy();

        //通過(guò)房產(chǎn)中介找房子     --   調(diào)用代理對(duì)象的方法并傳遞被代理對(duì)象,實(shí)現(xiàn)增強(qiáng)
        Human human = (Human) proxy.newInstance(new User());
        //執(zhí)行結(jié)果:
        //帶客戶看房子
        //租房
        //與客戶簽署合同
        human.behavior();
    }
}

五.總結(jié)

代理模式中分為兩種代理:靜態(tài)代理和動(dòng)態(tài)代理

靜態(tài)代理的實(shí)現(xiàn)會(huì)導(dǎo)致代理類的冗余,每增加一個(gè)被代理對(duì)象就需要增加一個(gè)代理類。就像一對(duì)一的明星經(jīng)紀(jì)人,每多一個(gè)明星就需要多一個(gè)經(jīng)紀(jì)人。

動(dòng)態(tài)代理的實(shí)現(xiàn)則減少了代理類的冗余,只需要一個(gè)動(dòng)態(tài)代理類即可,但是會(huì)對(duì)被代理的對(duì)象每個(gè)方法都進(jìn)行增強(qiáng)。就像房產(chǎn)中介,每多個(gè)客戶并不需要再額外多一個(gè)中介來(lái)服務(wù),房產(chǎn)中介可以一個(gè)人對(duì)多個(gè)用戶,但是每個(gè)用戶得到的都是同一個(gè)房產(chǎn)中介的服務(wù)。

下一章,將帶大家學(xué)習(xí)電腦與游戲的關(guān)系(設(shè)計(jì)模式之橋接模式)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491645.html

到了這里,關(guān)于Java設(shè)計(jì)模式之代理模式--經(jīng)紀(jì)人的工作的文章就介紹完了。如果您還想了解更多內(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)型設(shè)計(jì)模式,它提供了一個(gè)代理對(duì)象,充當(dāng)被代理對(duì)象的接口,以控制對(duì)被代理對(duì)象的訪問(wèn)。代理模式可以在不修改被代理對(duì)象的情況下,增加額外的功能或控制訪問(wèn)方式。 二、代碼 以下是一個(gè)示例代碼,說(shuō)明代理模式的使用: 在上述代碼中,

    2024年02月04日
    瀏覽(24)
  • 【Java設(shè)計(jì)模式005】代理模式

    由于一些特定原因某些對(duì)象不適合或者不能直接引用目標(biāo)對(duì)象,這時(shí)就可以使用代理模式。代理模式為目標(biāo)對(duì)象提供一個(gè)代理以控制訪問(wèn)對(duì)象對(duì)目標(biāo)對(duì)象的訪問(wèn)。客戶端只能直接訪問(wèn)代理對(duì)象,不能直接訪問(wèn)目標(biāo)對(duì)象,這么做確保了目標(biāo)對(duì)象的安全。生活中一個(gè)常見(jiàn)的例子就

    2024年02月12日
    瀏覽(19)
  • Java 與設(shè)計(jì)模式(13):代理模式

    代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,用于在訪問(wèn)對(duì)象時(shí)引入一個(gè)代理對(duì)象,以控制對(duì)實(shí)際對(duì)象的訪問(wèn)。代理對(duì)象充當(dāng)了客戶端和實(shí)際對(duì)象之間的中介,客戶端通過(guò)代理對(duì)象間接地訪問(wèn)實(shí)際對(duì)象,從而可以在訪問(wèn)過(guò)程中添加額外的邏輯或控制。代理模式可以提供對(duì)實(shí)際對(duì)象的保護(hù)

    2024年02月09日
    瀏覽(19)
  • 基于Java的設(shè)計(jì)模式 - 代理模式

    代理模式是一種使用代理對(duì)象來(lái)執(zhí)行目標(biāo)對(duì)象的方法并在代理對(duì)象中增強(qiáng)目標(biāo)對(duì)象方法的一種設(shè)計(jì)模式。簡(jiǎn)單來(lái)講就是在不修改目標(biāo)對(duì)象的基礎(chǔ)上,增強(qiáng)主業(yè)務(wù)邏輯的設(shè)計(jì)模式。 代理模式基本可分為三種 靜態(tài)代理 JDK動(dòng)態(tài)代理 CGLIB動(dòng)態(tài)代理 上述簡(jiǎn)單分就是靜態(tài)和動(dòng)態(tài)代理,靜

    2024年02月07日
    瀏覽(21)
  • Java設(shè)計(jì)模式---單例 工廠 代理模式

    單例模式是設(shè)計(jì)模式中的一種,屬于創(chuàng)建型模式。在軟件工程中,單例模式確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)。這種模式常用于那些需要頻繁實(shí)例化然后引用,且創(chuàng)建新實(shí)例的開(kāi)銷較大的類,例如數(shù)據(jù)庫(kù)連接池、緩存管理等。 意圖 :保證一個(gè)類僅有一個(gè)實(shí)例

    2024年01月24日
    瀏覽(28)
  • Java設(shè)計(jì)模式中的代理模式

    Java設(shè)計(jì)模式中的代理模式 代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它提供了一個(gè)代理對(duì)象,以控制對(duì)其他對(duì)象的訪問(wèn)。代理可以充當(dāng)中介,用于控制對(duì)真實(shí)對(duì)象的訪問(wèn)。 代碼舉例演示 靜態(tài)代理: 動(dòng)態(tài)代理 區(qū)別: 靜態(tài)代理: 代理類在編譯時(shí)就已經(jīng)確定,并且需要為每個(gè)被代理的

    2024年01月25日
    瀏覽(29)
  • 【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)
  • Java復(fù)習(xí)-20-接口(3)- 代理設(shè)計(jì)模式

    Java復(fù)習(xí)-20-接口(3)- 代理設(shè)計(jì)模式

    功能:可以幫助用戶將所有的開(kāi)發(fā)注意力只集中在核心業(yè)務(wù)功能的處理上。 代理模式(Proxy Pattern)是一種結(jié)構(gòu)性模式。代理模式為一個(gè)對(duì)象提供了一個(gè)替身,以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。即通過(guò)代理對(duì)象訪問(wèn)目標(biāo)目標(biāo)對(duì)象,可以在目標(biāo)對(duì)象實(shí)現(xiàn)的基礎(chǔ)上,增強(qiáng)額外的功能操作,即

    2024年02月09日
    瀏覽(17)
  • Java 設(shè)計(jì)者模式以及與Spring關(guān)系(四) 代理模式

    Java 設(shè)計(jì)者模式以及與Spring關(guān)系(四) 代理模式

    目錄 簡(jiǎn)介: 23設(shè)計(jì)者模式以及重點(diǎn)模式 代理模式(Proxy Pattern) 靜態(tài)代理示例 spring中應(yīng)用 動(dòng)態(tài)代理 1.基于JDK的動(dòng)態(tài)代理 target.getClass().getInterfaces()作用 內(nèi)名內(nèi)部類寫(xiě)法(更簡(jiǎn)潔,但不推薦) 2.基于CGLIB實(shí)現(xiàn) spring中應(yīng)用 本文是個(gè)系列一次會(huì)出兩個(gè)設(shè)計(jì)者模式作用,如果有關(guān)聯(lián)就三

    2024年01月23日
    瀏覽(92)
  • JAVA設(shè)計(jì)模式6:代理模式,用于控制對(duì)目標(biāo)對(duì)象的訪問(wèn)

    JAVA設(shè)計(jì)模式6:代理模式,用于控制對(duì)目標(biāo)對(duì)象的訪問(wèn)

    作者主頁(yè) :Designer 小鄭 作者簡(jiǎn)介 :3年JAVA全棧開(kāi)發(fā)經(jīng)驗(yàn),專注JAVA技術(shù)、系統(tǒng)定制、遠(yuǎn)程指導(dǎo),致力于企業(yè)數(shù)字化轉(zhuǎn)型,CSDN博客專家,阿里云社區(qū)專家博主,藍(lán)橋云課講師。 代理模式是一種常用的設(shè)計(jì)模式,它提供了一個(gè)代理對(duì)象,用于控制對(duì)目標(biāo)對(duì)象的訪問(wèn) 。 在代理模式

    2024年02月07日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包