欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java代理模式的示例詳解

 更新時(shí)間:2022年02月22日 17:05:27   作者:溫故知新之java  
代理模式(Proxy Parttern)為一個(gè)對(duì)象提供一個(gè)替身,來(lái)控制這個(gè)對(duì)象的訪問(wèn),即通過(guò)代理對(duì)象來(lái)訪問(wèn)目標(biāo)對(duì)象。本文將通過(guò)示例詳細(xì)講解一下這個(gè)模式,需要的可以參考一下

定義

代理模式(Proxy Parttern) 為一個(gè)對(duì)象提供一個(gè)替身,來(lái)控制這個(gè)對(duì)象的訪問(wèn),即通過(guò)代理對(duì)象來(lái)訪問(wèn)目標(biāo)對(duì)象,這樣做的話好處是可以在目標(biāo)對(duì)象實(shí)現(xiàn)的基礎(chǔ)上,進(jìn)行額外的功能的擴(kuò)展。

案例

需求

蘋(píng)果公司通過(guò)蘋(píng)果代理商來(lái)賣手機(jī)

方案:靜態(tài)代理模式

定義抽象接口類,該類在代理模式中扮演的是一個(gè)抽象功能的角色,該案例中就是把出售手機(jī)抽象為了一個(gè)接口

/**
 * 售賣手機(jī)的接口(代理模式——抽象角色)
 * @author:liyajie
 * @createTime:2022/2/22 14:42
 * @version:1.0
 */
public interface IPhone {

    /**
     * 出售手機(jī)
     * @author: liyajie
     * @date: 2022/2/22 14:44
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    void sellPhone();
}

定義蘋(píng)果手機(jī)公司類,該類在代理模式中扮演的是一個(gè)目標(biāo)角色,實(shí)現(xiàn)了IPhone接口,重寫(xiě)出售手機(jī)的方法

/**
 * 蘋(píng)果公司(代理模式——目標(biāo)角色)
 * @author:liyajie
 * @createTime:2022/2/22 14:46
 * @version:1.0
 */
public class TargetPhone implements IPhone {
    @Override
    public void sellPhone() {
        System.out.println("蘋(píng)果公司正在出售手機(jī)");
    }
}

定義代理類,通過(guò)代理類進(jìn)而調(diào)用目標(biāo)類的出售手機(jī)的方法,并加上自己的擴(kuò)展功能

/**
 * 代理商(代理模式——代理角色)
 * @author:liyajie
 * @createTime:2022/2/22 14:50
 * @version:1.0
 */
public class ProxyPhone implements IPhone {

    private IPhone iPhone;

    public ProxyPhone(IPhone iPhone){
        this.iPhone = iPhone;
    }

    @Override
    public void sellPhone() {
        System.out.println("代理商正在循環(huán)播放廣告,賺取廣告商廣告費(fèi)");
        System.out.println("代理商正在推薦自己的電子周邊產(chǎn)品,賺取費(fèi)用");
        iPhone.sellPhone();
        System.out.println("代理商正在賣出蘋(píng)果手機(jī),賺取差價(jià)");
    }
}

代理商賺錢的奧秘盡在下圖紅框中,賣出了蘋(píng)果手機(jī)賺錢,賣出了其他東西賺錢,廣告費(fèi)也賺錢

定義測(cè)試類

/**
 * 測(cè)試類
 * @author:liyajie
 * @createTime:2022/2/22 14:55
 * @version:1.0
 */
public class Test {
    public static void main(String[] args) {
        TargetPhone targetPhone = new TargetPhone();
        ProxyPhone proxyPhone = new ProxyPhone(targetPhone);
        proxyPhone.sellPhone();
    }
}

查看結(jié)果

總結(jié)

該方案采用了靜態(tài)代理的方式:

優(yōu)勢(shì):可以在不改變目標(biāo)對(duì)象功能的前提下,通過(guò)代理對(duì)象對(duì)目標(biāo)對(duì)象功能進(jìn)行擴(kuò)展

劣勢(shì):不利于程序的擴(kuò)展,需要同時(shí)維護(hù)目標(biāo)對(duì)象和代理對(duì)象,程序中會(huì)產(chǎn)生大量的代理類,維護(hù)成本高

到此這篇關(guān)于Java代理模式的示例詳解的文章就介紹到這了,更多相關(guān)Java代理模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Intellij IDEA 2020.3 配置教程詳解

    Intellij IDEA 2020.3 配置教程詳解

    這篇文章主要介紹了Intellij IDEA 2020.3 配置教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Spring?EnableAsync注解異步執(zhí)行源碼解析

    Spring?EnableAsync注解異步執(zhí)行源碼解析

    這篇文章主要為大家介紹了Spring?EnableAsync注解源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Mybatis中注解@MapKey的使用詳解

    Mybatis中注解@MapKey的使用詳解

    mybatis的原身是ibatis,現(xiàn)在已經(jīng)脫離了apache基金會(huì)。這篇文章主要介紹了Mybatis中注解@MapKey的使用的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • jmeter斷言的三種實(shí)現(xiàn)方式

    jmeter斷言的三種實(shí)現(xiàn)方式

    在使用Jmeter進(jìn)行性能測(cè)試或者接口自動(dòng)化測(cè)試工作中,經(jīng)常會(huì)用到的一個(gè)功能,就是斷言,本文主要介紹了jmeter斷言的三種實(shí)現(xiàn)方式,
    2024-01-01
  • 一文解決springboot打包成jar文件無(wú)法正常運(yùn)行的問(wèn)題

    一文解決springboot打包成jar文件無(wú)法正常運(yùn)行的問(wèn)題

    這篇文章主要介紹了一文解決springboot打包成jar文件無(wú)法正常運(yùn)行的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java?使用BeanFactory實(shí)現(xiàn)service與dao層解耦合詳解

    java?使用BeanFactory實(shí)現(xiàn)service與dao層解耦合詳解

    這篇文章主要介紹了java?使用BeanFactory實(shí)現(xiàn)service與dao層解耦合詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Cloud Zipkin服務(wù)端追蹤服務(wù)

    Spring Cloud Zipkin服務(wù)端追蹤服務(wù)

    這篇文章主要介紹了Spring Cloud Zipkin服務(wù)端追蹤服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java生成N個(gè)不重復(fù)的隨機(jī)數(shù)的三種方法總結(jié)

    Java生成N個(gè)不重復(fù)的隨機(jī)數(shù)的三種方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了三種Java生成N個(gè)不重復(fù)的隨機(jī)數(shù)的方法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的可以了解下
    2023-10-10
  • Spring的BeanFactoryPostProcessor接口示例代碼詳解

    Spring的BeanFactoryPostProcessor接口示例代碼詳解

    這篇文章主要介紹了Spring的BeanFactoryPostProcessor接口,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java編程中使用XFire框架調(diào)用WebService程序接口

    Java編程中使用XFire框架調(diào)用WebService程序接口

    這篇文章主要介紹了Java編程中使用XFire調(diào)用WebService程序接口的方法,WebService是一種跨編程語(yǔ)言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù),需要的朋友可以參考下
    2015-12-12

最新評(píng)論