国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 16:07:14
字體:
供稿:網(wǎng)友

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

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

   
面下我們來個(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()方法前后加上日記:

    我必須再寫一個(gè)類來現(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();

  }
}


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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 珲春市| 依安县| 吴旗县| 确山县| 论坛| 阆中市| 石门县| 凤城市| 侯马市| 林芝县| 富蕴县| 磐石市| 镇沅| 永康市| 浦县| 文成县| 涿州市| 蕲春县| 察哈| 当雄县| 鲁山县| 名山县| 枞阳县| 乌兰浩特市| 遂溪县| 丹凤县| 贵阳市| 肥西县| 罗城| 五莲县| 沙湾县| 察隅县| 樟树市| 金阳县| 普安县| 元氏县| 漯河市| 霍州市| 宜阳县| 耿马| 盘山县|