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

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

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

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

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

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

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

package ProxyModel;

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

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

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

package ProxyModel;

/**
 * 
 * 小張是送鮮花的本體,送其實是小張送的,小明只是借助小張的送的鮮花去給小紅
 * @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:實現(xiàn)小明通過小張送的禮物,轉(zhuǎn)交給小紅。

package ProxyModel;

/**
 * 小明轉(zhuǎn)送小紅禮物的完成方法,其實是借助小張送的禮物來完成的,此處小明即為代理
 * @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)識小紅,委托1班小明給小紅送東西
 * 總結(jié):小張送小紅禮物,小張送,然后小明通過小張接過送的禮物,給小紅,
 * 其實小明是借助小張送的禮物,來代理完成送禮物的操作。
 * 代理模式
 * @author 我不是張英俊
 *
 */
public class test {

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

  }

}

5:控制臺

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

總結(jié):

代理模式適用場景

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

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

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

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

 優(yōu)點:

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

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

缺點:

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

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

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

相關(guān)文章

  • SpringBoot?IDEA聯(lián)不了網(wǎng)創(chuàng)建項目的3種方式(官網(wǎng)創(chuàng)建版、阿里云版、手工制作版)

    SpringBoot?IDEA聯(lián)不了網(wǎng)創(chuàng)建項目的3種方式(官網(wǎng)創(chuàng)建版、阿里云版、手工制作版)

    這篇文章主要介紹了SpringBoot?IDEA聯(lián)不了網(wǎng)創(chuàng)建項目的3種方式,主要包括官網(wǎng)創(chuàng)建版、阿里云版、手工制作版,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java實現(xiàn)ATM機操作系統(tǒng)

    Java實現(xiàn)ATM機操作系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)ATM機操作系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • SpringBoot中使用HTTP客戶端工具Retrofit

    SpringBoot中使用HTTP客戶端工具Retrofit

    這篇文章主要為大家介紹了SpringBoot中使用HTTP客戶端工具Retrofit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Java?Spring?事件監(jiān)聽詳情解析

    Java?Spring?事件監(jiān)聽詳情解析

    這篇文章主要介紹了Java?Spring?事件監(jiān)聽詳情解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Java中的Semaphore源碼分析

    Java中的Semaphore源碼分析

    這篇文章主要介紹了Java中的Semaphore源碼分析,Semaphore是一個訪問公共資源的線程數(shù)量如限流、停車等,它是一個基于AQS實現(xiàn)的共享鎖,主要是通過控制state變量來實現(xiàn),需要的朋友可以參考下
    2023-11-11
  • 基于jstl 標(biāo)簽的使用介紹

    基于jstl 標(biāo)簽的使用介紹

    本篇文章小編為大家介紹,基于jstl 標(biāo)簽的使用介紹,需要的朋友參考下
    2013-04-04
  • maven鏡像倉庫的配置過程

    maven鏡像倉庫的配置過程

    本文詳細(xì)介紹了MAVEN_HOME的配置步驟、Path環(huán)境變量的設(shè)置、檢測配置是否成功的方法、修改默認(rèn)的maven依賴包下載路徑以及配置阿里鏡像倉庫的路徑,同時分享了作者在配置過程中遇到的問題,如命令不識別、版本不匹配等,并提供了解決方案
    2024-09-09
  • MyBatis動態(tài)SQL標(biāo)簽用法實例詳解

    MyBatis動態(tài)SQL標(biāo)簽用法實例詳解

    本文通過實例代碼給大家介紹了MyBatis動態(tài)SQL標(biāo)簽用法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-07-07
  • Mybatis參數(shù)處理的幾種方法小結(jié)

    Mybatis參數(shù)處理的幾種方法小結(jié)

    在Mybatis中如何處理參數(shù)是一個非常重要的環(huán)節(jié),本文將詳細(xì)介紹 Mybatis 的參數(shù)處理機制,包括傳入?yún)?shù)和返回參數(shù)的處理方式,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Java?項目中使用遞歸的小結(jié)

    Java?項目中使用遞歸的小結(jié)

    在 Java 中,遞歸是指在方法的定義中調(diào)用自身的過程,遞歸是基于方法調(diào)用棧的原理實現(xiàn)的:當(dāng)一個方法被調(diào)用時,會在調(diào)用棧中創(chuàng)建一個對應(yīng)的棧幀,包含方法的參數(shù)、局部變量和返回地址等信息,這篇文章主要介紹了Java?項目中對使用遞歸的理解分享,需要的朋友可以參考下
    2024-07-07

最新評論