最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解代理模式

 更新時(shí)間:2022年04月22日 08:40:29   作者:桃花鍵神  
代理模式是Java常見的設(shè)計(jì)模式之一。所謂代理模式是指客戶端并不直接調(diào)用實(shí)際的對(duì)象,而是通過調(diào)用代理,來間接的調(diào)用實(shí)際的對(duì)象

模式: 代理模式

案例: 大奔代干娘賣酒

什么是代理模式

代理模式的定義: 由于某些原因需要給某對(duì)象提供一個(gè)代理以控制對(duì)該對(duì)象的訪問。這時(shí),訪問對(duì)象不適合或者不能直接引用目標(biāo)對(duì)象,代理對(duì)象作為訪問對(duì)象和目標(biāo)對(duì)象之間的中介。

優(yōu)點(diǎn)

1、代理模式在客戶端與目標(biāo)對(duì)象之間起到一個(gè)中介作用和保護(hù)目標(biāo)對(duì)象的作用;

2、代理對(duì)象可以擴(kuò)展目標(biāo)對(duì)象的功能;

3、代理模式能將客戶端與目標(biāo)對(duì)象分離,在一定程度上降低了系統(tǒng)的耦合度,增加了程序的可擴(kuò)展性

缺點(diǎn)

1、代理模式會(huì)造成系統(tǒng)設(shè)計(jì)中類的數(shù)量增加

2、在客戶端和目標(biāo)對(duì)象之間增加一個(gè)代理對(duì)象,會(huì)造成請(qǐng)求處理速度變慢;

3、增加了系統(tǒng)的復(fù)雜度;

知識(shí)點(diǎn)

代理模式的結(jié)構(gòu)比較簡(jiǎn)單,主要是通過定義一個(gè)繼承抽象主題的代理來包含真實(shí)主題,從而實(shí)現(xiàn)對(duì)真實(shí)主題的訪問,下面來分析其基本結(jié)構(gòu)和實(shí)現(xiàn)方法。

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

案例: 大奔代干娘賣酒

抽象主題(Subject)類:賣酒

真實(shí)主題(Real Subject)類:干娘的酒館

代理(Proxy)類:大奔的酒攤

大奔來干娘的酒館前面擺了個(gè)攤代理賣酒的生意。

賣酒

一個(gè)賣酒接口,聲明了一個(gè)賣酒的抽象方法

public interface Jiu {
    void show();
}

干娘的酒館

干娘的酒館類實(shí)現(xiàn)了賣酒的接口,并且實(shí)現(xiàn)了show()賣酒方法,聲明了一個(gè)酒的名字,和一個(gè)aa()方法提示大奔來擺攤了

public class GanNiang implements Jiu {
    private String name;
    GanNiang() {
    }
    GanNiang(String name) {
        this.name = name;
        aa();
    }
    @Override
    public void show() {
        System.out.printf("賣出一壇%s", name);
    }
    public void aa() {
        System.out.println("大奔來擺攤了");
    }
}

大奔的酒攤

大奔的酒攤類實(shí)現(xiàn)了賣酒接口,聲明了酒的名字和干娘酒館的屬性,并且實(shí)現(xiàn)了賣酒方法。

public class DaBen implements Jiu {
    private String name;
    private GanNiang ganNiang;
    DaBen() {
    }
    DaBen(String name) {
        this.name = name;
    }
    @Override
    public void show() {
        if (ganNiang == null) {
            ganNiang = new GanNiang(name);
        }
        ganNiang.show();
    }
}

測(cè)試

new一個(gè)大奔的酒攤,調(diào)用兩次show()方法,就相當(dāng)于賣了兩次酒。

public class Demo {
    public static void main(String[] args) {
        DaBen daBen = new DaBen("女兒紅");
        daBen.show();
        System.out.println();
        System.out.println();
        daBen.show();
    }
}

這里可以看出第一次賣酒和第二次賣酒輸出的結(jié)果不一樣,因?yàn)槊恳淮钨u酒都要去干娘的酒館拿酒。大奔第一次來拿酒的時(shí)候通知干娘,我來擺攤了,后面干娘已經(jīng)知道大奔來了所以再拿酒就不需要通知了。

總結(jié)

代理模式就是找一個(gè)代理代替自己去執(zhí)行,這樣只需要避免了重復(fù)new對(duì)象的浪費(fèi),并且可以找多個(gè)代理代替自己。

如:

1、Windows 里面的快捷方式。

2、豬八戒去找高翠蘭結(jié)果是孫悟空變的,可以這樣理解:把高翠蘭的外貌抽象出來,高翠蘭本人和孫悟空都實(shí)現(xiàn)了這個(gè)接口,豬八戒訪問高翠蘭的時(shí)候看不出來這個(gè)是孫悟空,所以說孫悟空是高翠蘭代理類。

3、買火車票不一定在火車站買,也可以去代售點(diǎn)。

4、一張支票或銀行存單是賬戶中資金的代理。支票在市場(chǎng)交易中用來代替現(xiàn)金,并提供對(duì)簽發(fā)人賬號(hào)上資金的控制。

到此這篇關(guān)于Java設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解代理模式的文章就介紹到這了,更多相關(guān)Java代理模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

锡林郭勒盟| 甘谷县| 乌鲁木齐市| 松溪县| 石屏县| 贡觉县| 延长县| 石屏县| 三原县| 香格里拉县| 乌兰浩特市| 宿州市| 柳河县| 临猗县| 武威市| 西林县| 海阳市| 普兰店市| 姜堰市| 英超| 北川| 汉沽区| 日土县| 龙里县| 肥东县| 微博| 东源县| 繁峙县| 桂阳县| 济宁市| 武清区| 郯城县| 武山县| 抚顺市| 邻水| 天津市| 建宁县| 通江县| 沙雅县| 额尔古纳市| 米脂县|