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

java設(shè)計(jì)模式學(xué)習(xí)之代理模式

 更新時(shí)間:2017年10月12日 10:27:50   作者:南國木棉  
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式學(xué)習(xí)之代理模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

代理模式(Proxy):為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。

代理模式結(jié)構(gòu)圖

模擬需求:3班小張喜歡1班小紅,但是不認(rèn)識(shí)小紅,委托1班小明送給小紅禮物。

1:創(chuàng)建一個(gè)小張和小明都能實(shí)現(xiàn)的接口。

package ProxyModel;

/**
 * 總的接口
 * @author 我不是張英俊
 *
 */
interface ISendGift {

  void GiveDolls();
  void GiveFlowers();
  void GiveChocolate();
}

2:實(shí)現(xiàn)小張送禮物。

package ProxyModel;

/**
 * 
 * 小張是送鮮花的本體,送其實(shí)是小張送的,小明只是借助小張的送的鮮花去給小紅
 * @author 我不是張英俊
 *
 */
public class Pursuit implements ISendGift{

  String mm;
  public Pursuit(String mm){
    this.mm=mm;
  }
  @Override
  public void GiveDolls() {
    // TODO Auto-generated method stub
    System.out.println("送"+mm+"洋娃娃");
  }

  @Override
  public void GiveFlowers() {
    // TODO Auto-generated method stub
    System.out.println("送"+mm+"鮮花");
  }

  @Override
  public void GiveChocolate() {
    // TODO Auto-generated method stub
    System.out.println("送"+mm+"巧克力");
  }

}

3:實(shí)現(xiàn)小明通過小張送的禮物,轉(zhuǎn)交給小紅。

package ProxyModel;

/**
 * 小明轉(zhuǎn)送小紅禮物的完成方法,其實(shí)是借助小張送的禮物來完成的,此處小明即為代理
 * @author 我不是張英俊
 *
 */
public class Proxy implements ISendGift{

  Pursuit gg;
  public Proxy(String mm){
    gg=new Pursuit(mm);
  }
  
  @Override
  public void GiveDolls() {
    // TODO Auto-generated method stub
    gg.GiveDolls();
  }

  @Override
  public void GiveFlowers() {
    // TODO Auto-generated method stub
    gg.GiveFlowers();
  }

  @Override
  public void GiveChocolate() {
    // TODO Auto-generated method stub
    gg.GiveChocolate();
  }

}

4:測試類:

package ProxyModel;

/**
 * 需求,3班小張喜歡1班小紅,但是不認(rèn)識(shí)小紅,委托1班小明給小紅送東西
 * 總結(jié):小張送小紅禮物,小張送,然后小明通過小張接過送的禮物,給小紅,
 * 其實(shí)小明是借助小張送的禮物,來代理完成送禮物的操作。
 * 代理模式
 * @author 我不是張英俊
 *
 */
public class test {

  public static void main(String[] args) {
    String mm="小紅";
    Proxy xiaoming=new Proxy(mm);
    xiaoming.GiveDolls();
    xiaoming.GiveFlowers();
    xiaoming.GiveChocolate();

  }

}

5:控制臺(tái)

送小紅洋娃娃
送小紅鮮花
送小紅巧克力

總結(jié):

代理模式適用場景

1:遠(yuǎn)程代理,也就是為一個(gè)對(duì)象在不同的地址空間提供局部代表。這樣可以隱瞞一個(gè)對(duì)象存在于不同地址空間的事實(shí)。

2:虛擬代理,是根據(jù)需要?jiǎng)?chuàng)建開銷很大的對(duì)象。通過它來存放實(shí)例化需要很長時(shí)間的真實(shí)對(duì)象。

3:安全代理,用來控制真實(shí)對(duì)象訪問時(shí)的權(quán)限。

4:智能指引,是指當(dāng)調(diào)用真實(shí)的對(duì)象時(shí),代理處理另外一些事。

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

1:代理模式能夠協(xié)調(diào)調(diào)用者和被調(diào)用者,在一定程度上降低了系統(tǒng)的耦合度;

2:代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用,這樣起到了保護(hù)目標(biāo)對(duì)象的作用。

缺點(diǎn):

1:由于在客戶端和真實(shí)對(duì)象之間增加了代理對(duì)象,因此有些類型的代理模式可能會(huì)造成請求的處理速度變慢;

2:實(shí)現(xiàn)代理模式需要額外的工作,有些代理模式的實(shí)現(xiàn)非常復(fù)雜。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Maven 構(gòu)建插件的自定義配置方式

    Maven 構(gòu)建插件的自定義配置方式

    Maven是一個(gè)強(qiáng)大的構(gòu)建工具,支持自定義配置的插件,本文介紹了如何在pom.xml中配置Maven插件,包括基本的插件配置結(jié)構(gòu)、常見插件的自定義配置以及如何控制插件的執(zhí)行順序,通過這些配置,開發(fā)者可以更靈活地管理項(xiàng)目的構(gòu)建過程,提高構(gòu)建效率,感興趣的朋友一起看看吧
    2025-02-02
  • Java線程安全中的單例模式

    Java線程安全中的單例模式

    這篇文章主要介紹了Java線程安全中的單例模式,需要的朋友可以參考下
    2015-02-02
  • 深入淺出RocketMQ的事務(wù)消息

    深入淺出RocketMQ的事務(wù)消息

    RocketMQ事務(wù)消息(Transactional?Message)是指應(yīng)用本地事務(wù)和發(fā)送消息操作可以被定義到全局事務(wù)中,要么同時(shí)成功,要么同時(shí)失敗。本文主要介紹了RocketMQ事務(wù)消息的相關(guān)知識(shí),需要的可以參考一下
    2023-04-04
  • java如何通過流讀取圖片做base64編碼

    java如何通過流讀取圖片做base64編碼

    這篇文章主要介紹了java如何通過流讀取圖片做base64編碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼

    java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼

    本文主要介紹了java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java驗(yàn)證碼圖片生成代碼

    Java驗(yàn)證碼圖片生成代碼

    這篇文章主要為大家詳細(xì)介紹了Java驗(yàn)證碼圖片生成代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java?File類提供的方法與操作

    Java?File類提供的方法與操作

    Java使用File類來表示計(jì)算機(jī)系統(tǒng)磁盤文件的對(duì)象類型。File中提供了大量的方法,可以對(duì)文件進(jìn)行增加、刪除、修改、重命名等常規(guī)操作。File類的對(duì)象會(huì)存儲(chǔ)文件自身的信息,例如文件在系統(tǒng)中的存儲(chǔ)目錄、文件大小、文件讀寫權(quán)限等
    2023-03-03
  • JDBC如何獲取數(shù)據(jù)庫連接

    JDBC如何獲取數(shù)據(jù)庫連接

    這篇文章主要為大家詳細(xì)為大家詳細(xì)介紹了JDBC如何獲取數(shù)據(jù)庫連接,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • idea中開啟Run Dashboard 和 快速復(fù)制項(xiàng)目并改變端口的方法

    idea中開啟Run Dashboard 和 快速復(fù)制項(xiàng)目并改變端口的方法

    這篇文章主要介紹了idea中開啟Run Dashboard 和 快速復(fù)制項(xiàng)目并改變端口的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • mybatis中 if-test 數(shù)字判斷的坑及解決

    mybatis中 if-test 數(shù)字判斷的坑及解決

    這篇文章主要介紹了mybatis中 if-test 數(shù)字判斷的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論

大渡口区| 渭源县| 英吉沙县| 新昌县| 民乐县| 龙门县| 通化市| 弋阳县| 沈丘县| 武鸣县| 塘沽区| 平泉县| 定兴县| 司法| 西贡区| 东兴市| 沙洋县| 西贡区| 深泽县| 孟村| 定陶县| 乡城县| 桃江县| 商丘市| 资阳市| 林州市| 遂宁市| 博爱县| 托里县| 昌吉市| 柞水县| 伊吾县| 西城区| 荥阳市| 延庆县| 巴东县| 民和| 台安县| 岳阳市| 林周县| 巴林右旗|