程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 署理腳色java設計形式之靜態署理具體引見

署理腳色java設計形式之靜態署理具體引見

編輯:關於JAVA

署理腳色java設計形式之靜態署理具體引見。本站提示廣大學習愛好者:(署理腳色java設計形式之靜態署理具體引見)文章只能為提供參考,不一定能成為您想要的結果。以下是署理腳色java設計形式之靜態署理具體引見正文


    Java靜態署理形式
署理:一個腳色代表別一個腳色來完成某些特定的能功。
   好比:臨盆商,中央商,客戶這三者這間的關系 
            客戶買產物不並直接與臨盆商打交道,也用不知道產物是若何臨盆的,客戶只與中央商打交道,而中央商即可以對產物行進一些包裝,供提一些售後的辦事。

    署理形式有三個腳色: 1. 籠統主題腳色 2. 署理主題腳色 3. 際實被署理腳色

   
面下我們來個一個靜態署理的實際。
我以一個坦克為例。


籠統主題腳色:Moveable

package com.gjy.proxy;

    public interface Moveable {
 void move();
}

    署理主題腳色:TanktimeProxy

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

package com.gjy.proxy;

public class Tank implements Moveable{

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

}

    測試:

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()辦法前後加上日志:

    我必需再寫一個類來實際這一能功:

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

測試:

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()辦法前後入加了日志和間時統計的能功,因為TanktimeProxy,TanklogProxy都實際了Moveable口接,所以TanklogProxy可以署理TanktimeProxy,反過去也能夠,它們對Tank的署理順序是可以交流的。

假如我想在Tank的move()辦法用調的前後入加更多的能功,能否是要寫更多的署理主題腳色,這子樣會使得碼代過於臃腫,不容易於保護,那有無甚麼辦法可以處置呢,案答是可以的,我們可以靜態的來成生署理主題腳色,來署理全體的被署理對象,這就是靜態署理。

文章停止給年夜家分享下法式員的一些笑話語錄: IBM和波音777
  波音777是有史以來第一架完整在電腦虛擬實際中設計制作的飛機,所用的裝備完整由IBM公司所供給。試飛前,波音公司的總裁異常熱忱的約請IBM的技巧主管去加入試飛,可那位主管卻說道:“啊,異常幸運,惋惜那天是我老婆的誕辰,So..”..
  波音公司的總載一聽就朝氣了:“怯弱鬼,我還沒告知你試飛的日期呢!”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved