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

代理角色java設(shè)計模式之靜態(tài)代理詳細介紹

 更新時間:2013年05月09日 09:47:38   作者:  
查了好多資料,發(fā)現(xiàn)還是不全,干脆自己整理吧,至少保證在我的做法正確的,以免誤導(dǎo)讀者,也是給自己做個記錄吧!

    Java動態(tài)代理模式
代理:一個角色代表別一個角色來實現(xiàn)某些特定的能功。
   比如:生產(chǎn)商,中間商,客戶這三者這間的關(guān)系 
            客戶買產(chǎn)品不并直接與生產(chǎn)商打交道,也用不曉得產(chǎn)品是如何生產(chǎn)的,客戶只與中間商打交道,而中間商便可以對產(chǎn)品行進一些包裝,供提一些售后的服務(wù)。

    代理模式有三個角色: 1. 抽象主題角色 2. 代理主題角色 3. 際實被代理角色

   
面下我們來個一個靜態(tài)代理的現(xiàn)實。
我以一個坦克為例。


抽象主題角色:Moveable

復(fù)制代碼 代碼如下:

package com.gjy.proxy;

    public interface Moveable {
 void move();
}


    代理主題角色:TanktimeProxy
復(fù)制代碼 代碼如下:

package com.gjy.proxy;

public class TanktimeProxy implements Moveable{
  private Moveable t;

  public TanktimeProxy(Moveable t) {
   super();
   this.t = t;
  }


  @Override
  public void move() {
   long time1 = System.currentTimeMillis();
   System.out.println("time1="+time1);
   t.move();
   long time2 = System.currentTimeMillis();
   System.out.println("time2="+time2);
   System.out.println("運行間時為:"+(time2-time1));
  }
}


    際實被代理對象:Tank
復(fù)制代碼 代碼如下:

package com.gjy.proxy;

public class Tank implements Moveable{

  @Override
  public void move() {
   System.out.println("TanK moving........");
  }

}


    測試:
復(fù)制代碼 代碼如下:

package com.gjy.proxy;

public class TestTank {
  public static void main(String[] args) {
   Tank t = new Tank();
   Moveable move = new TanktimeProxy(t);
   move.move();

  }
}

  

    面下我想在TanK的move()方法前后加上日記:

    我必須再寫一個類來現(xiàn)實這一能功:

復(fù)制代碼 代碼如下:

package com.gjy.proxy;

public class TanklogProxy implements Moveable{
  private Moveable t;

  public TanklogProxy(Moveable t) {
   super();
   this.t = t;
  }


  @Override
  public void move() {
   System.out.println("start move........");
   t.move();
   System.out.println("end move......");
  }
}


測試:
復(fù)制代碼 代碼如下:

package com.gjy.proxy;

public class TestTank {
 public static void main(String[] args) {
   Tank t = new Tank();
   Moveable move = new TanktimeProxy(t);
   Moveable movet = new TanklogProxy(move);
   movet.move();

  }
}


這樣我通過代理在Tank的move()方法前后入加了日記和間時統(tǒng)計的能功,由于TanktimeProxy,TanklogProxy都現(xiàn)實了Moveable口接,所以TanklogProxy可以代理TanktimeProxy,反過來也可以,它們對Tank的代理次序是可以交換的。

如果我想在Tank的move()方法用調(diào)的前后入加更多的能功,是否是要寫更多的代理主題角色,這子樣會使得碼代過于癡肥,不易于維護,那有沒有什么方法可以處理呢,案答是可以的,我們可以動態(tài)的來成生代理主題角色,來代理全部的被代理對象,這就是動態(tài)代理。

文章結(jié)束給大家分享下程序員的一些笑話語錄: IBM和波音777
  波音777是有史以來第一架完全在電腦虛擬現(xiàn)實中設(shè)計制造的飛機,所用的設(shè)備完全由IBM公司所提供。試飛前,波音公司的總裁非常熱情的邀請IBM的技術(shù)主管去參加試飛,可那位主管卻說道:“啊,非常榮幸,可惜那天是我妻子的生日,So..”..
  波音公司的總載一聽就生氣了:“膽小鬼,我還沒告訴你試飛的日期呢!”

相關(guān)文章

  • springboot使用yml文件配置多環(huán)境方式(dev、test、prod)

    springboot使用yml文件配置多環(huán)境方式(dev、test、prod)

    這篇文章主要介紹了springboot使用yml文件配置多環(huán)境方式(dev、test、prod),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • spring+springmvc+mybatis+maven入門實戰(zhàn)(超詳細教程)

    spring+springmvc+mybatis+maven入門實戰(zhàn)(超詳細教程)

    這篇文章主要介紹了spring+springmvc+mybatis+maven入門實戰(zhàn)(超詳細教程),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Sentinel整合Feign流程詳細講解

    Sentinel整合Feign流程詳細講解

    要想整合Feign,首先要了解Feign的使用以及執(zhí)行過程,然后看?Sentinel如何整合進去,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • MyBatis批量插入數(shù)據(jù)的三種方法實例

    MyBatis批量插入數(shù)據(jù)的三種方法實例

    由于項目需要生成多條數(shù)據(jù),并保存到數(shù)據(jù)庫當(dāng)中,項目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,應(yīng)該要比循環(huán)插入的效果更好,下面這篇文章主要給大家介紹了關(guān)于MyBatis批量插入數(shù)據(jù)的三種方法,需要的朋友可以參考下
    2021-10-10
  • 分析java 中AspectJ切面執(zhí)行兩次的原因

    分析java 中AspectJ切面執(zhí)行兩次的原因

    這篇文章主要介紹了分析java 中AspectJ切面執(zhí)行兩次的原因的相關(guān)資料,希望通過本能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • SpringBoot集成MyBatisPlus+MySQL的實現(xiàn)

    SpringBoot集成MyBatisPlus+MySQL的實現(xiàn)

    MybatisPlus是國產(chǎn)的第三方插件, 它封裝了許多常用的CURDapi,免去了我們寫mapper.xml的重復(fù)勞動,本文主要介紹了SpringBoot集成MyBatisPlus+MySQL的實現(xiàn),感興趣的可以了解一下
    2023-10-10
  • Java-性能分析和監(jiān)控工具深入詳解

    Java-性能分析和監(jiān)控工具深入詳解

    這篇文章主要介紹了Java-性能分析和監(jiān)控工具深入詳解,文章內(nèi)容詳細,簡單易懂,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2023-01-01
  • resultMap標簽中里的collection標簽詳解

    resultMap標簽中里的collection標簽詳解

    這篇文章主要介紹了resultMap標簽中里的collection標簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java詳解對象終止方法finalize()的用法

    Java詳解對象終止方法finalize()的用法

    在前面的 jvm 中, 需要補充幾個部分的內(nèi)容, 接著來看 finalize() 機制, 它可以使接近死亡的對象復(fù)活, 下來我們來看是怎么一回事
    2022-05-05
  • 論java如何通過反射獲得方法真實參數(shù)名及擴展研究

    論java如何通過反射獲得方法真實參數(shù)名及擴展研究

    這篇文章主要為大家介紹了java如何通過反射獲得方法的真實參數(shù)名以及擴展研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步早日升職加薪
    2022-01-01

最新評論