什麼是代理設計模式?就是一我的或者一個機構表明另外一我的或者另外一個機構採起行動。在一些狀況下,一個客戶不想或者不可以直接引用一個對象,而代理對象能夠在客戶端和目標對象以前起到中介的做用。
java
生活中的例子:過年加班比較忙,沒空去買火車票,這時能夠打個電話到附近的票務中心,叫他們幫你買張回家的火車票,固然這會附加額外的勞務費。但要清楚票務中心本身並不賣票,只有火車站才真正賣票,票務中心賣給你的票實際上是經過火車站實現的。這點很重要!設計模式
如何實現代理呢?首先被代理對象和代理對象都須要實現同一個接口,其次,代理對象要包含被代理對象的引用。那麼,接下來咱們用一個程序演示一下實現過程。ide
定義一個接口:測試
public interface person { void buyTicket(); }
實現上面接口的被代理類this
public class BusyMan implements person{ @Override public void buyTicket() { System.out.println("買票"); } }
代理類spa
public class HelpMan implements person { person p; public HelpMan(person p) { this.p = p; } @Override public void buyTicket() { System.out.println("×××"); p.buyTicket(); } }
測試類設計
public class TestProxy { public static void main(String[] args) { person p=new BusyMan(); new HelpMan(p).buyTicket(); } }
運行結果代理
××× 買票
經過程序能夠看到,這個很忙的BusyMan並無真的本身買票,而是經過了一個HelpMan來實現這個買票的功能。這就是代理設計模式,也被稱爲靜態代理。固然還有動態代理,不過先不介紹了。。。對象