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

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

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

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

    代理模式有三個(gè)角色: 1. 抽象主題角色 2. 代理主題角色 3. 際實(shí)被代理角色

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


抽象主題角色: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("運(yùn)行間時(shí)為:"+(time2-time1));
  }
}


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

package com.gjy.proxy;

public class Tank implements Moveable{

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

}


    測(cè)試:
復(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ě)一個(gè)類(lèi)來(lái)現(xiàn)實(shí)這一能功:

復(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......");
  }
}


測(cè)試:
復(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();

  }
}


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

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

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

相關(guān)文章

  • LibrarySystem圖書(shū)管理系統(tǒng)開(kāi)發(fā)(一)

    LibrarySystem圖書(shū)管理系統(tǒng)開(kāi)發(fā)(一)

    這篇文章主要為大家詳細(xì)介紹了LibrarySystem圖書(shū)管理系統(tǒng)開(kāi)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)(Run-Time Data Areas)

    Java JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)(Run-Time Data Areas)

    運(yùn)行時(shí)數(shù)據(jù)區(qū),是java虛擬機(jī)定義的在程序執(zhí)行期間使用的各種運(yùn)行時(shí)的數(shù)據(jù)區(qū),通過(guò)JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)圖例給大家展示的很詳細(xì),對(duì)JVM 運(yùn)行時(shí)數(shù)據(jù)區(qū)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊

    java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • icePDF去水印的方法(推薦)

    icePDF去水印的方法(推薦)

    下面小編就為大家?guī)?lái)一篇icePDF去水印的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • java實(shí)現(xiàn)選中刪除功能的實(shí)例代碼

    java實(shí)現(xiàn)選中刪除功能的實(shí)例代碼

    這篇文章主要介紹了java實(shí)現(xiàn)選中刪除功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Ubuntu 15下安裝Eclipse經(jīng)驗(yàn)分享

    Ubuntu 15下安裝Eclipse經(jīng)驗(yàn)分享

    這篇文章主要為大家分享了Ubuntu 15下安裝Eclipse經(jīng)驗(yàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 解決idea中javaweb的mysql8.0.15配置問(wèn)題

    解決idea中javaweb的mysql8.0.15配置問(wèn)題

    這篇文章主要介紹了idea中javaweb的mysql8.0.15配置問(wèn)題 ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Java合并兩個(gè)相同的List集合的四種方法解析

    Java合并兩個(gè)相同的List集合的四種方法解析

    這篇文章主要給大家介紹了關(guān)于Java合并兩個(gè)相同的List集合的四種方法,在Java編程中常需合并兩個(gè)List,常用addAll()方法,簡(jiǎn)單高效,Java8起可用Stream的concat()方法,并發(fā)場(chǎng)景下,CopyOnWriteArrayList類(lèi)保證線程安全,Collections.union()合并且去重,需要的朋友可以參考下
    2024-10-10
  • idea使用外置tomcat配置springboot詳細(xì)步驟

    idea使用外置tomcat配置springboot詳細(xì)步驟

    昨天小編遇到一個(gè)問(wèn)題使用springboot自帶的tomcat啟動(dòng)沒(méi)有任何問(wèn)題,不知道idea使用外置tomcat配置springboot該如何設(shè)置的,今天小編給大家分享一篇教程幫助大家解決這個(gè)問(wèn)題
    2021-07-07
  • Java利用哈夫曼編碼實(shí)現(xiàn)字符串壓縮

    Java利用哈夫曼編碼實(shí)現(xiàn)字符串壓縮

    赫夫曼編碼也翻譯為?哈夫曼編碼(Huffman?Coding),又稱霍夫曼編碼,是一種編碼方式,?屬于一種程序算法。本文將利用哈夫曼樹(shù)實(shí)現(xiàn)哈夫曼編碼進(jìn)行字符串壓縮,需要的可以參考一下
    2022-09-09

最新評(píng)論

河南省| 天峨县| 太康县| 镇赉县| 阳江市| 阳泉市| 饶阳县| 泸定县| 平南县| 遂平县| 金塔县| 磴口县| 同心县| 义马市| 南投市| 邯郸县| 赫章县| 咸宁市| 百色市| 三台县| 中山市| 铜川市| 乌鲁木齐县| 北票市| 禹州市| 白水县| 英德市| 黔南| 华安县| 松潘县| 渝北区| 遵化市| 丰县| 南昌市| 监利县| 靖西县| 略阳县| 清镇市| 邵阳县| 丘北县| 泾川县|